Как получить XML-узел из XDocument

Как получить XML-элемент из XDocument с помощью LINQ?

Предположим, у меня есть XDocument Named XMLDoc, который показан ниже:

  123 ABC   124 DEF   XElement Contacts = from xml2 in XMLDoc.Elements("Contacts").Elements("Node") where xml2.Element("ID").Value == variable select xml2; 

Но я получаю сообщение об ошибке «Ссылка на объект не установлена ​​…..»

Как получить определенный узел из XML-файла с помощью LINQ? И я хочу обновить некоторые значения в этом узле?

Как это возможно ????

Заранее спасибо………

Ответ на дополнительный вопрос, отправленный OP.

test.xml:

    123 ABC   124 DEF   

Выберите один узел:

 XDocument XMLDoc = XDocument.Load("test.xml"); string id = "123"; // id to be selected XElement Contact = (from xml2 in XMLDoc.Descendants("Node") where xml2.Element("ID").Value == id select xml2).FirstOrDefault(); Console.WriteLine(Contact.ToString()); 

Удалите один узел:

 XDocument XMLDoc = XDocument.Load("test.xml"); string id = "123"; var Contact = (from xml2 in XMLDoc.Descendants("Node") where xml2.Element("ID").Value == id select xml2).FirstOrDefault(); Contact.Remove(); XMLDoc.Save("test.xml"); 

Добавить новый узел:

 XDocument XMLDoc = XDocument.Load("test.xml"); XElement newNode = new XElement("Node", new XElement("ID", "500"), new XElement("Name", "Whatever") ); XMLDoc.Element("Contacts").Add(newNode); XMLDoc.Save("test.xml"); 

Операция .Elements возвращает список XElements – но то, что вы действительно хотите, является элементом SINGLE. Добавь это:

 XElement Contacts = (from xml2 in XMLDoc.Elements("Contacts").Elements("Node") where xml2.Element("ID").Value == variable select xml2).FirstOrDefault(); 

Таким образом, вы сообщите LINQ, чтобы дать вам первый (или NULL, если они не указаны) из этого СПИСОК XElements, которые вы выбираете.

Марк

  • XmlTextReader против XDocument
  • XDocument или XmlDocument
  • Символ ':', шестнадцатеричное значение 0x3A, не может быть включен в имя
  • как использовать XPath с XDocument?
  • Преобразование XDocument в XmlDocument и наоборот
  • В чем разница между Linq и потомками XML и элементами
  • LINQ для чтения XML
  • Linq to XML - обновление / изменение узлов XML-документа
  • Используйте Linq для Xml с пространствами имен Xml
  • Анализ XML с использованием XDocument
  • Давайте будем гением компьютера.