Je suis en train d'apprendre Linq, et je reste sur ce que j'espère être assez simple. Mon document XML est comme:Lire une valeur d'élément spécifique basée sur un attribut spécifique dans Linq?
<?xml version="1.0" encoding="utf-8"?>
<XDOC>
...
<ItemsDetail>
<Item name="Item1">
<data1>
<Data type="classA">55</Data>
<Data type="classB">66</Data>
</data1>
<data2>
<Data type="classA">77</Data>
<Data type="classB">88</Data>
</data2>
</Item>
</ItemsDetail>
</XDOC>
Je charge mon XML ci-dessus dans un type XDocument
puis la requête
var query = from p in ILSXml.Elements("XDOC").Elements("ItemsDetail").Elements("Item")
select p;
Puis je dirige une foreach
sur de la requête.
foreach (var record in query)
{
Console.WriteLine("Name: {0}", record.Attribute("Name").Value);
Console.WriteLine("Data1 ClassA: {0}", record.Element("data1").Element("Data").Attribute("classA").Value);
}
Ainsi, la ligne:
Console.WriteLine("Data1 ClassA: {0}", record.Element("data1").Element("Data").Attribute("classA").Value);
ne fonctionne pas qui, est ce que j'étais assez bien attendre. Dois-je exécuter une autre série de requêtes ou exécuter des méthodes anonymes en ligne? Oh et s'il vous plaît ne pas commenter sur le xml, ce n'est pas le mien, je dois juste travailler avec elle.
Cela fonctionne, semblable à ce que je regardais tout à l'heure, mais manquant le .First. Existe-t-il un moyen plus recommandé de travailler avec un tel document XML? –
Si vous pouvez mettre la main sur un XSD (document de schéma XML) qui décrit votre document, alors je chercherais certainement à générer de vraies classes et à utiliser la sérialisation XML standard. –