Question

Disons que j'ai le fichier XML suivant:

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

J'ai également créé un objet Client qui correspond aux champs appropriés.

Maintenant, si j'essaye de sérialiser ceci en une liste générique en tant que telle:

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

Je vais avoir une exception, car ma liste n'est pas mappée sur le même espace de noms que les clients du document XML, et je ne peux pas l'ajouter en tant qu'attribut car j'utilise une liste générique, pas une coutume. collection

Comment puis-je demander au sérialiseur de faire correspondre l'espace de nom à la liste sans créer de collection personnalisée?

Modifier: Je devrais élaborer un peu, l’exception levée par le sérialiseur est:

(Customers xmlns = '' > n'était pas attendu.

Maintenant, comme j'utilise une liste (T) comme nœud parent, comment puis-je faire correspondre la liste générique à l'espace de noms spécifié dans le document XML?

Était-ce utile?

La solution

Je pense que l'erreur a à voir avec le < Clients > noeud pas les xmlns.

Essayez

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

Par défaut, un < ArrayOfCustomer > noeud

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top