Как получить элемент из XML-файла
-
09-06-2019 - |
Вопрос
Я получаю XML-файл из веб-сервиса.Теперь я хочу извлечь один из этих элементов из файла.
Я думаю, мне следует использовать XPath - есть какая-нибудь хорошая ссылка для начала?
Решение
Не специфичен для VB, но попробуйте это: http://www.w3schools.com/xsl/xpath_intro.asp
Другие советы
Я только что восстановил свои навыки XPath - это Краткий справочный лист по Xslt и XPath это довольно полезная ссылка - она не вдается в подробности, но в ней перечислено, что доступно и по чему вы, возможно, захотите найти дополнительную информацию.
Руководство по w3schools, на которое была дана ссылка ранее, не такое уж и замечательное - требуется много времени, чтобы не охватить большого объема информации, - но его все равно стоит прочитать.
Одним из способов было бы извлечь необходимую информацию только из файла xslt в новый xml и использовать этот новый xml в качестве основы данных для дальнейшей обработки
Если мне нужно выполнить какой-нибудь XPath, я просто изменяю один из этих примеров.
- дочерний элемент::node() выбирает всех дочерних элементов контекстного узла, независимо от типа их узла
- атрибут::имя выбирает атрибут name контекстного узла
- атрибут::* выбирает все атрибуты контекстного узла
- потомок::параграф выбирает элемент para, являющийся потомком контекстного узла
- предок::div выбирает все див предки контекстного узла
- предок-или-я::div выбирает див предки контекстного узла и, если контекстный узел является элементом div, также и контекстный узел
- потомок-или-я::параграф выбирает para элемент, являющийся потомком контекстного узла, и, если контекстный узел является para элемент, а также контекстный узел
- самость::пара выбирает контекстный узел, если это para элемент, и в противном случае ничего не выбирает
- потомок::глава/потомок::пункт выбирает para элемент потомки элемента chapter дочерние элементы контекстного узла
- ребенок::*/ребенок::пункт выбирает все para внуки контекстного узла
- / выбирает корневой каталог документа (который всегда является родительским для элемента document).
- /потомок::параграф выбирает все para элементы в том же документе, что и контекстный узел
- /потомок::olist/дочерний элемент::item выбирает все элементы элемента, которые имеют олист родительский и которые находятся в том же документе, что и контекстный узел
- дочерний элемент::пункт[позиция()=1] выбирает первый para дочерний элемент контекстного узла
- дочерний элемент::пункт[позиция()=последняя()] выбирает последний para дочерний элемент контекстного узла
- дочерний элемент::пункт[позиция()=последняя()-1] выбирает предпоследний para дочерний элемент контекстного узла
- ребенок::пункт[позиция()>1] выбирает все para дочерние элементы контекстного узла, отличные от первого дочернего элемента para контекстного узла
- следующий брат::глава[позиция()=1] выбирает следующий глава дочерний элемент контекстного узла
- предыдущий-родной::глава[позиция()=1] выбирает предыдущий глава дочерний элемент контекстного узла
- /потомок::рисунок[позиция()=42] выбирает сорок второй элемент рисунка в документе
- /дочернийэлемент::doc/дочернийэлемент::глава[позиция()=5]/дочернийэлемент::раздел[позиция()=2] выбирает второй раздел пятого глава из числа док элемент документа
- дочерний элемент::para[атрибут::type="предупреждение"] выбирает все para дочерние элементы контекстного узла, имеющие атрибут type со значением предупреждение
- дочерний элемент::para[атрибут::type='предупреждение'][позиция()=5] выбирает пятый para дочерний элемент контекстного узла, который имеет атрибут type со значением warning
- дочерний элемент::пункт[позиция()=5][атрибут::тип="предупреждение"] выбирает пятый para дочерний элемент контекстного узла, если у этого дочернего элемента есть атрибут типа со значением предупреждение
- дочерний элемент::глава[дочернийэлемент::title='Введение'] выбирает дочерние разделы контекстного узла, которые имеют один или несколько дочерних заголовков со строковым значением, равным Introduction
- дочерний элемент::глава[дочернийэлемент::название] выбирает глава дочерние элементы контекстного узла, имеющие один или несколько дочерних элементов заголовка
- ребенок::*[сам:: глава или сам:: приложение] выбирает глава и приложение дочерние элементы контекстного узла
- дочерний элемент::*[self:: глава или self:: приложение][позиция()=последняя()] выбирает последний глава или приложение дочерний элемент контекстного узла
С подробной документацией можно ознакомиться здесь здесь.Также эти примеры взяты оттуда.