Я получил этот файл XML:
<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>
Может ли кто-нибудь дать мне код C # с помощью LINQ, самый простой способ напечатать этот результат:
(Обратите внимание на дополнительное пространство, если это level2
узел)
A
A1
A2
B
B1
B2
C
В настоящее время я получил этот код:
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
источник
источник
Ответы:
Попробуй это.
источник
Или, если вы хотите более общий подход - т.е. для вложения до "levelN":
источник
Пара простых старых
foreach
петель обеспечивает чистое решение:источник
Вот пара полных рабочих примеров, основанных на примерах @bendewey & @dommer. Мне нужно было немного подправить каждый из них, чтобы он заработал, но в случае, если другой нуб LINQ ищет рабочие примеры, вот вам:
И следующее:
Оба компилируются и работают в VS2010 с использованием csc.exe версии 4.0.30319.1 и дают точно такой же вывод. Надеюсь, это поможет кому-то еще, кто ищет рабочие примеры кода.
РЕДАКТИРОВАТЬ: добавил пример @eglasius, так как он стал полезным для меня:
источник
Ps. Вы должны использовать .Root на любой из этих версий.
источник