2017-06-06 2 views
0

Voici le XML:éléments XML C# deserialize avec des attributs dans la liste

<xml id = "1234"> 
    <connect id="2"/> 
    <connect id="1"/> 
    <connect id="21"/> 
    <connect id="3"/> 
    <connect id="7"/> 
</xml> 

Actuellement, je fais ceci:

public class xml 
{ 
    //Constructor 

    [XmlAttribute ("id")] 
    public uint id; 

    [XmlElement ("connect")] 
    public List<Connection> Connections { get; set; } 

    //Deserializer 
} 

public class Connection 
{ 
    [XmlAttribute ("id")] 
    public uint id { get; set; } 
} 

L'objectif est de se débarrasser de la toute classe de connexion et Désérialise xml directement dans:

List<uint> connections; 

Répondre

1

d'abord, votre XML est pas valide, je suppose que c'est juste une faute de frappe - il pas de balise fermante f ou "connect".

Je vous recommande d'utiliser linq XDocument.
Ensuite, il est facile:

XDocument xdoc = XDocument.Parse(xml); 
List<uint> list = xdoc 
        .Descendants("connect") 
        .Select(node => uint.Parse(node.Attribute("id").Value)) 
        .ToList(); 
+0

Est-il possible d'y parvenir en utilisant 'System.Xml.Serialization'? –

+0

Merci! C'était exactement la solution que je cherchais. Je n'ai pas réalisé le potentiel de XDocument. –