2009-11-16 3 views
2

Je possède ce fichier XMLXML Désérialisation avec C# .NET 3.5

<?xml version="1.0" standalone="yes"?> 
<Root> 
    <Object> 
     <referenceName>People</referenceName> 
     <query>select * from people</query> 
    </Object> 
    <Object> 
     <referenceName>Countries</referenceName> 
     <query>select * from countries</query> 
    </Object> 
</Root> 

je dois convertir en un objet avec C#.

Je suis confus comment le faire. Veuillez noter que je peux avoir beaucoup d'objets dans le fichier xml.

Je sais que je dois utiliser un [XMLArray ......

Merci

+0

En fait, vous ** n'avez pas l'utilisation [[XmlArray] 'ici ... voir l'exemple dans la réponse. –

Répondre

4

L'astuce la plus simple est ici à la ligne de commande VS:

xsd example.xml 
xsd example.xsd /classes 

Et le tour est joué; un fichier example.cs avec l'exemple C# qui montre comment obtenir ce fichier XML à partir d'objets .NET via XmlSerializer.

Dans ce cas, je pense ce qui suit fonctionnerait:

public class Root 
{ 
    [XmlElement("Object")] 
    public List<SomeOtherObject> Objects { get; set; } 
} 

public class SomeOtherObject 
{ 
    [XmlElement("referenceName")] 
    public string Name { get; set; } 
    [XmlElement("query")] 
    public string Query { get; set; } 
} 

mise à jour: il validé; Oui, cela fonctionne ...

XmlSerializer ser = new XmlSerializer(typeof(Root)); 
using (XmlReader reader = XmlReader.Create(
    new StringReader(xml))) 
{ 
    var obj = (Root)ser.Deserialize(reader); 
    // use obj 
} 
+0

très belle 10q :) –