Saya mendapat file XML ini:
<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>
Bisakah seseorang memberi saya kode C # menggunakan LINQ, cara paling sederhana untuk mencetak hasil ini:
(Catat ruang ekstra jika itu adalah sebuah level2
simpul)
A
A1
A2
B
B1
B2
C
Saat ini saya mendapat kode ini:
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
sumber
sumber
Jawaban:
Coba ini.
sumber
Atau, jika Anda menginginkan pendekatan yang lebih umum - yaitu untuk bersarang hingga "levelN":
sumber
Beberapa
foreach
loop tua biasa memberikan solusi bersih:sumber
Berikut adalah beberapa contoh kerja lengkap yang dibangun di atas contoh @bendewey & @dommer. Saya perlu sedikit mengubah masing-masing untuk membuatnya bekerja, tetapi dalam kasus lain LINQ noob sedang mencari contoh yang berfungsi, ini dia:
Dan selanjutnya:
Ini mengkompilasi & bekerja di VS2010 menggunakan csc.exe versi 4.0.30319.1 dan memberikan hasil yang sama persis. Semoga ini membantu orang lain yang sedang mencari contoh kode yang berfungsi.
EDIT: menambahkan contoh @eglasius juga karena bermanfaat bagi saya:
sumber
Ps. Anda harus menggunakan .Root pada salah satu versi ini.
sumber