This article has been localized into Russian by the community.
Работа с классом 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();