Я бы посоветовал против смешивания XmlDocuments и XDocuments, как они два различных подхода к управлению XML DOM, которые не особенно легко компоновать вместе.
Если вы хотите использовать Lynx для XML, а кто бы не хотел;), я бы рекомендовал сосредоточиться на типах X____; XDocument, XElement и т.д.
С этой целью вы можете вручную построить граф объектов, или, если вы предпочитаете, вы можете создать XDocument
из исходного XML:
var xml = @"<?xml version='1.0'?>
<Applications>
<Application id='1'>
<Name>App1</Name>
</Application>
<Application id='2'>
<Name>App2</Name>
</Application>
<Application id='3'>
<Name>App3</Name>
</Application>
<Application id='4'>
<Name>App4</Name>
</Application>
<Application id='5'>
<Name>App5</Name>
</Application>
</Applications>";
var doc = XDocument.Parse(xml);
После того как вы XDocument в руке , вы можете запросить его с Lync (или методы цепи вместе, если вы предпочитаете):
var appList = (from app in doc.Root.Descendants("Application")
select app).ToList();
Приведенный выше код выбирает все XElements под названием «Application» в корневом узле. Если вы укажете «Приложение», вы также получите все узлы.
С этим списком элементов, теперь вы можете просто записать некоторые данные о них:
Console.WriteLine($"{appList.Count()} Application Elements Found:");
appList.ForEach(app =>
{
Console.WriteLine($" Application: {app.Attribute("id")}");
});
Заметим, что это с помощью C# v6 строка интерполяции функции - Я уверен, что вы можете выяснить, как вручную построить необходимые строки, если вы используете предыдущую версию C#? ;)
Надеюсь, это приведет вас к вашему пути к тому, что вы хотите?
Фактически, я работаю над существующим приложением, и он использует XmlDocument, и я не хочу изменять существующий код. Поэтому я не могу использовать XDocument. Вот почему я прошу использовать такой же код с помощью объекта XmlDocument. Я хочу, чтобы код использовал linq или через цикл foreach, если возможно –