2009-05-05 8 views
1

angegeben Lets sagen, dass ich die folgende XML-Datei haben:Wie XML generische Sammlung serialisiert werden, wenn Namespace

<?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> 

Ich habe auch ein Customer-Objekt erstellt, die in die entsprechenden Felder abbildet.

Nun, wenn ich versuche, dies auf eine generische Liste als solche zu serialisiert:

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

ich eine Ausnahme bekommen, weil meine Liste auf den gleichen Namensraum wie die Kunden in dem XML-Dokument nicht abgebildet, und ich kann es nicht als Attribut hinzufügen, da ich eine generische Liste verwende, keine benutzerdefinierte Sammlung

Wie kann ich dem Serializer mitteilen, dass der Namespace der Liste entspricht, ohne eine benutzerdefinierte Sammlung zu erstellen?

Edit: ich ein wenig ausarbeiten soll, die Ausnahme von den Serializer geworfen ist:

(Kunden xmlns = ''> wurde nicht erwartet,

Nun, weil ich eine Liste bin mit (T.) als übergeordnete Knoten, wie kann ich die generische Liste auf den Namespace im XML-Dokument angegebenen übereinstimmen?

+0

Ist die Tatsache, dass die End-Tag ist und nicht ein Tippfehler? –

+0

Yeh Tippfehler meinerseits, sorry – mwjackson

Antwort

1

ich denke, der Fehler mit den <Kunden> Knoten nicht die xmlns zu tun hat.

Versuchen

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

standardmäßig wäre es ein <ArrayOfCustomer> Knoten zu erwarten

+0

Perfekt, danke! – mwjackson