Ich habe diese XML-Datei:
<root>
<level1 name="A">
<level2 name="A1" />
<level2 name="A2" />
</level1>
<level1 name="B">
<level2 name="B1" />
<level2 name="B2" />
</level1>
<level1 name="C" />
</root>
Könnte mir jemand einen C # -Code mit LINQ geben, der einfachste Weg, dieses Ergebnis zu drucken:
(Beachten Sie den zusätzlichen Platz, wenn es sich um einen level2
Knoten handelt.)
A
A1
A2
B
B1
B2
C
Derzeit habe ich diesen Code:
XDocument xdoc = XDocument.Load("data.xml"));
var lv1s = from lv1 in xdoc.Descendants("level1")
select lv1.Attribute("name").Value;
foreach (var lv1 in lv1s)
{
result.AppendLine(lv1);
var lv2s = from lv2 in xdoc...???
}
c#
xml
linq
linq-to-xml
Aximili
quelle
quelle
Antworten:
Versuche dies.
quelle
Oder wenn Sie einen allgemeineren Ansatz wünschen - dh zum Verschachteln bis zu "levelN":
quelle
Ein paar einfache alte
foreach
Schleifen bieten eine saubere Lösung:quelle
Hier sind einige vollständige Arbeitsbeispiele, die auf den Beispielen @bendewey & @dommer aufbauen. Ich musste jedes ein wenig optimieren, damit es funktioniert, aber falls ein anderer LINQ-Neuling nach Arbeitsbeispielen sucht, können Sie loslegen:
Und als nächstes:
Diese kompilieren und arbeiten in VS2010 mit csc.exe Version 4.0.30319.1 und liefern genau die gleiche Ausgabe. Hoffentlich helfen diese jemandem, der nach funktionierenden Beispielen für Code sucht.
BEARBEITEN: @eglasius 'Beispiel wurde ebenfalls hinzugefügt, da es für mich nützlich wurde:
quelle
Ps. Sie müssen .Root für jede dieser Versionen verwenden.
quelle