2010-10-28 4 views
2

J'ai xml de Je veux obtenir des donnéesproblème avec la récupération de données à partir de XML par LINQ

XDocument loaded = XDocument.Load(@"c:\TERC.xml"); 


     var query = (from c in loaded.Descendants("catalog") 
       from r in c.Descendants("row") 
       select (string)r.Element("Name")); 

cela me retourne collection de null

Comment puis-je résoudre ce problème?

Voici ce xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<teryt> 
<catalog name="Compix"> 
<row> 
    <col name="NAME">Name1</col> 
    <col name="ID">12</col> 
    </row> 
<row> 
    <col name="NAME">Name2</col> 
    <col name="ID">13</col> 
    </row> 
<row> 
    <col name="NAME">Name3</col> 
    <col name="ID">14</col> 
    </row> 
</catalog> 
</teryt> 

Répondre

2
List<string> query = (from c in loaded.Descendants("catalog") 
         from r in c.Descendants("row") 
         from col in r.Descendants("col").Where(col1 => 
         col1.Attribute(XName.Get("name")).Value == "NAME") 
         select col.Value).ToList(); 

AFTER exécution ci-dessus, query contient les chaînes suivantes:

  • Name1
  • Name2
  • Name3
+0

désolé, j'ai ajouté une valeur très importante à mon xml. C'est seulement un morceau de ce grand xml, et je n'ai pas été si important pour vous de savoir que:/ – user278618

+0

Mis à jour ma réponse pour travailler avec votre XML mis à jour. – Donut

1

Vous pouvez essayer ceci:

var query = (from c in loaded.Descendants("catalog") 
        from r in c.Descendants("row") 
        select (string)r.Value); 

Je suppose que vous voulez obtenir les données à l'intérieur du noeud "col". Sinon, veuillez préciser ce que vous voulez récupérer.

Espérons que cela aide.

+0

désolé, j'ai ajouté une valeur très importante à mon xml. C'est seulement un morceau de ce grand xml, et je ne l'ai pas fait si important de le savoir:/ – user278618

+0

Pas de problème c'est normal, nous ne sommes pas dans votre code donc nous ne savons pas tout. J'espère juste que certaines réponses vous seront utiles. – Hal

1

Nom est un attribut sur l'élément col dont vous blême t la valeur, cette partie manquait dans la requête.

 var query = (from c in loaded.Descendants("catalog") 
        from r in c.Descendants("row") 
        from col in r.Descendants("col") 
        select (string)r.Value).ToList<string>(); 
+0

désolé, j'ai ajouté une valeur très importante à mon xml. C'est seulement un morceau de ce grand xml, et je ne l'ai pas fait si important de le savoir: / – user278618

Questions connexes