TOC

This article has been localized into Russian by the community.

XML:

Работа с классом XmlNode

В предыдущей главе мы использовали класс XmlDocument, чтобы распарсить XML-файл. В примере был представлен новый класс, который очень важен для парсинга XML с помощью XmlDocument: класс XmlNode. XML парсится в корневой XmlNode после чего вы получаете доступ к дочерним элементам с помощью свойства ChildNodes. Однако класс XmlNode также хорошо позволяет вам получить доступ к большому количеству другой информации, например, имя тега, атрибуты, внутренний текст и сам XML. Эта глава описывает один из более интересных аспектов класс XmlNode, о котором нужно знать, потому что класс XmlNode является ключевым понятием парсинга XML с помощью класа XmlDocument. В следующих примерах мы будем часто использовать DocumentElement и хотя его тип XmlElement, он наследуется от XmlNode, так что по сути это одно и тоже.

Свойство Name просто вернет вам имя узла. Например, следующий код выведет текст "user":

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\">A user node</user>");
Console.WriteLine(xmlDoc.DocumentElement.Name);
Console.ReadKey();

Свойство InnerText будет хранить текстовое содержимое между начальным и конечным тегами, как здесь:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<test>InnerText is here</test>");
Console.WriteLine(xmlDoc.DocumentElement.InnerText);
Console.ReadKey();

Свойство InnerXml немного похоже на свойство InnerText, только в то время как InnerText удалит все собственные теги XML, свойство InnerXml этого не сделает. Следующий пример показывает различие:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("InnerText: " + xmlDoc.DocumentElement.InnerText);
Console.ReadKey();

Свойство OuterXml такое же как InnerXml, только оно будет содержать XML теги своего узла. Следующий пример показывает различие:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<users><user>InnerText/InnerXml is here</user></users>");
Console.WriteLine("InnerXml: " + xmlDoc.DocumentElement.InnerXml);
Console.WriteLine("OuterXml: " + xmlDoc.DocumentElement.OuterXml);
Console.ReadKey();

В предыдущей главе мы работали с атрибутами, но здесь другой пример:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<user name=\"John Doe\" age=\"42\"></user>");
if(xmlDoc.DocumentElement.Attributes["name"] != null)
    Console.WriteLine(xmlDoc.DocumentElement.Attributes["name"].Value);
if(xmlDoc.DocumentElement.Attributes["age"] != null)
    Console.WriteLine(xmlDoc.DocumentElement.Attributes["age"].Value);
Console.ReadKey();

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!