Pregunta

Digamos que tengo el siguiente archivo 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>

También he creado un objeto Cliente que se asigna a los campos apropiados.

Ahora, si intento serializar esto en una lista genérica como tal:

XmlSerializer xml = new XmlSerializer(typeof(List<Customer>));

Obtendré una excepción, porque mi Lista no está asignada al mismo espacio de nombres que los Clientes en el documento XML, y no puedo agregarla como un atributo porque estoy usando una lista genérica, no personalizada colección

¿Cómo puedo decirle al serializador que haga coincidir el espacio de nombres con la lista sin crear una colección personalizada?

Editar: Debería explicar un poco, la excepción lanzada por el serializador es:

(Clientes xmlns = '' > no se esperaba.

Ahora, como estoy usando una Lista (T) como nodo principal, ¿cómo puedo hacer coincidir la lista genérica con el espacio de nombres especificado en el documento XML?

¿Fue útil?

Solución

Creo que el error tiene que ver con < Clientes > nodo no los xmlns.

Probar

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

Por defecto esperaría un < ArrayOfCustomer > nodo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top