rusqhyazeubebgcahrcsdanlenetfifrglkadeelhuisgaitkkkylvltmknoplptrosrskslessvtrukuz

XPath представляет язык запросов в XML - C#

Больше
7 мес. 4 дн. назад #144 от О.Коровяков
О.Коровяков создал тему: XPath представляет язык запросов в XML - C#
XPath представляет язык запросов в XML. Он позволяет выбирать элементы, соответствующие определенному селектору.

Рассмотрим некоторые наиболее распространенные селекторы:

.
выбор текущего узла

..
выбор родительского узла

*
выбор всех дочерних узлов текущего узла

user
выбор всех узлов с определенным именем, в данном случае с именем "user"

@name
выбор атрибута текущего узла, после знака @ указывается название атрибута (в данном случае "name")

@+
выбор всех атрибутов текущего узла

element[3]
выбор определенного дочернего узла по индексу, в данном случае третьего узла

//user
выбор в документе всех узлов с именем "user"

user[@name='Bill Gates']
выбор элементов с определенным значением атрибута. В данном случае выбираются все элементы "user" с атрибутом name='Bill Gates'

user[company='Microsoft']
выбор элементов с определенным значением вложенного элемента. В данном случае выбираются все элементы "user", у которых дочерний элемент "company" имеет значение 'Microsoft'

//user/company
выбор в документе всех узлов с именем "company", которые находятся в элементах "user"

Действие запросов XPath основано на применении двух методов класса XmlElement:

SelectSingleNode(): выбор единственного узла из выборки. Если выборка по запросу содержит несколько узлов, то выбирается первый
SelectNodes(): выборка по запросу коллекции узлов в виде объекта XmlNodeList

Для запросов возьмем xml-документ:
<?xml version="1.0" encoding="utf-8" ?>
<users>
  <user name="Bill Gates">
    <company>Microsoft</company>
    <age>48</age>
  </user>
  <user name="Larry Page">
    <company>Google</company>
    <age>42</age>
  </user>
</users>

Теперь выберем все узлы корневого элемента, то есть все элементы user:
XmlDocument xDoc = new XmlDocument();
xDoc.Load("D://users.xml");
XmlElement xRoot = xDoc.DocumentElement;
 
// выбор всех дочерних узлов
XmlNodeList childnodes = xRoot.SelectNodes("*");
foreach (XmlNode n in childnodes)
    Console.WriteLine(n.OuterXml);

Выберем все узлы <user>:
XmlNodeList childnodes = xRoot.SelectNodes("user");

Выведем на консоль значения атрибутов name у элементов user:
XmlNodeList childnodes = xRoot.SelectNodes("user");
foreach (XmlNode n in childnodes)
    Console.WriteLine(n.SelectSingleNode("@name").Value);

Результатом выполнения будет следующий вывод:
Bill Gates
Larry Page

Выберем узел, у которого атрибут name имеет значение "Bill Gates":
XmlNode childnode = xRoot.SelectSingleNode("user[@name='Bill Gates']");
if (childnode != null)
    Console.WriteLine(childnode.OuterXml);

Выберем узел, у которого вложенный элемент "company" имеет значение "Microsoft":
XmlNode childnode = xRoot.SelectSingleNode("user[company='Microsoft']");
if (childnode != null)
    Console.WriteLine(childnode.OuterXml);

Допустим, нам надо получить только компании. Для этого надо осуществить выборку вниз по иерархии элементов:
XmlNodeList childnodes = xRoot.SelectNodes("//user/company");
foreach (XmlNode n in childnodes)
    Console.WriteLine(n.InnerText);

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подпишитесь на наши новости...

Если вам интересны материалы опубликованных на Нашем сайте, Вы можете подписаться на рассылку информационных бюллетеней о новых публикациях ... Просто введите адрес электронной почты на какую Вы хотите получать Новости и нажмите кнопку "Подписаться"

Контакт Инфо

Ok-Wood.
08304 ул.Салютная,c.Гнедын,
Киевская обл, Украина
  • Тел: +39 067 492 41 24
    Tel: +38 095 095 88 60
  • Email: info@ok-wood.com.ua
  • Web: ok-wood.com.ua

Весь процесс строительства описан на страницах сайта, но более подробно о технологии, методах строительства, и всех деталях - Вы можете узнать в книге.