Como serializar XML a coleção genérica quando namespace é especificado
-
05-07-2019 - |
Pergunta
Vamos dizer que eu tenho o seguinte arquivo XML:
<?xml version="1.0" encoding="utf-8"?>
<Customers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Customer.xsd">
<Customer>
<FirstName></FirstName>
<LastName></LastName>
</Customer>
<Customer>
<FirstName></FirstName>
<LastName></LastName>
</Customer>
<Customer>
<FirstName></FirstName>
<LastName></LastName>
</Customer>
</Customer>
Além disso, criei um objeto Cliente que mapeia para os campos apropriados.
Agora, se eu tentar serializar isso para uma lista genérica como tal:
XmlSerializer xml = new XmlSerializer(typeof(List<Customer>));
Vou pegar uma exceção, porque a minha lista não é mapeado para o mesmo espaço de nomes como os clientes nos doc XML, e eu não posso adicioná-lo como um atributo porque eu estou usando uma lista genérica, não um costume coleção
Como posso saber o serializador para igualar-se o espaço de nomes para a lista sem criar uma coleção personalizada?
Edit: Eu deveria elaborar um pouco, a exceção lançada pelo serializador é:
(xmlns Clientes = ''> não foi o esperado.
Agora, porque eu estou usando um List (T) como o nó pai, como posso igualar-se a lista genérica para o namespace especificado no documento XML?
Solução
Eu acho que o erro tem a ver com os
Tente
XmlRootAttribute xr = new XmlRootAttribute("Customers");
XmlSerializer xs = new XmlSerializer(typeof(List<Customer>), xr);
Por padrão, ele seria de esperar um