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?

Foi útil?

Solução

Eu acho que o erro tem a ver com os nó não xmlns.

Tente

XmlRootAttribute xr = new XmlRootAttribute("Customers");
XmlSerializer xs = new XmlSerializer(typeof(List<Customer>), xr); 

Por padrão, ele seria de esperar um node

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top