Ich lerne nur Linq, und blieb auf, was ich hoffe, ist ziemlich einfach. Meine XML-Dokument ist wie:Lesen Sie einen bestimmten Elementwert basierend auf einem bestimmten Attribut in 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>
Also habe ich oben in einen XDocument
Typ meine XML laden und dann abfragen, die
var query = from p in ILSXml.Elements("XDOC").Elements("ItemsDetail").Elements("Item")
select p;
Dann habe ich eine foreach
auf auf die Abfrage ausführen.
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);
}
So ist die Zeile:
Console.WriteLine("Data1 ClassA: {0}", record.Element("data1").Element("Data").Attribute("classA").Value);
funktioniert nicht das, was ich ziemlich viel erwartet war. Muss ich eine weitere Reihe von Abfragen ausführen oder einige anonyme Inline-Methoden ausführen?
Oh, und bitte kommentieren Sie das XML nicht, es gehört mir nicht, ich muss nur damit arbeiten.
Das funktioniert, ähnlich dem, was ich gerade sah, obwohl die .First fehlt. Gibt es eine empfohlene Methode, mit einem solchen XML-Dokument zu arbeiten? –
Wenn Sie ein XSD-Dokument (XML-Schemadokument) erhalten, das Ihr Dokument beschreibt, dann würde ich auf jeden Fall versuchen, echte Klassen zu generieren und die Standard-XML-Serialisierung zu verwenden. –