Я хочу читать данные XML, используя XPath в Java, поэтому для собранной информации я не могу анализировать XML в соответствии с моими требованиями.
вот что я хочу сделать:
Получить XML-файл из Интернета через его URL, затем использовать XPath для его анализа, я хочу создать в нем два метода. Одна из них заключается в том, что я ввожу определенный идентификатор атрибута узла и в результате получаю все дочерние узлы, а вторая - предположим, что я просто хочу получить только определенное значение дочернего узла.
<?xml version="1.0"?>
<howto>
<topic name="Java">
<url>http://www.rgagnonjavahowto.htm</url>
<car>taxi</car>
</topic>
<topic name="PowerBuilder">
<url>http://www.rgagnon/pbhowto.htm</url>
<url>http://www.rgagnon/pbhowtonew.htm</url>
</topic>
<topic name="Javascript">
<url>http://www.rgagnon/jshowto.htm</url>
</topic>
<topic name="VBScript">
<url>http://www.rgagnon/vbshowto.htm</url>
</topic>
</howto>
В приведенном выше примере я хочу прочитать все элементы, если я ищу через @name, а также одну функцию, в которой я просто хочу, чтобы URL из @name 'Javascript' возвращал только один элемент узла.
Ответы:
Вам нужно что-то вроде этого:
Затем вы вызываете
expr.evaluate()
передачу документа, определенного в этом коде, и ожидаемый тип возвращаемого значения и приводите результат к типу объекта результата.Если вам нужна помощь с определенными выражениями XPath, вам, вероятно, следует задавать ее как отдельные вопросы (если только это не был ваш вопрос в первую очередь - я понял, что ваш вопрос заключается в том, как использовать API в Java).
Изменить: (Ответ на комментарий): Это выражение XPath даст вам текст первого элемента URL под PowerBuilder:
Это даст вам второе:
Вы получите это с помощью этого кода:
Если вы не знаете, сколько URL-адресов в данном узле, вам лучше сделать что-то вроде этого:
А затем переберите NodeList.
источник
Вы можете попробовать это.
XML-документ
Сохранить как
employees.xml
.Парсер класс
У класса есть следующие методы
Исходный код
источник
get
методах. Изменяется только строка XPath, и большая часть остального кода остается такой же. Возможно, достаточно одного метода getValuesForXpath ().Пример начала работы:
XML-файл:
Java-код:
источник
Вот пример обработки xpath с помощью vtd-xml ... для тяжелой обработки XML это не имеет себе равных. вот недавняя статья на эту тему Обработка XML с помощью Java - тест производительности
источник
Если у вас есть XML, как показано ниже
и хотел извлечь ниже XML
Приведенный ниже код помогает добиться того же
Теперь, если вы хотите только XML, как показано ниже
Вам нужно изменить
String xpathStr = "//Envelope//Header";
вString xpathStr = "//Envelope//Header/*";
источник
Это показывает вам, как
DOM
Nodes
сXPath
Nodes
.Мы назовем код со следующим утверждением
В нашем случае мы хотим напечатать часть
creatorNames
изbook.xml
использования в"//book/creators/creator/creatorName"
качестве xpath для выполненияprintNode
действия на каждом узле, который соответствуетXPath
.Полный код
Печать
Для
book.xml
источник
Расширяя превосходный ответ @bluish и @Yishai, вы узнаете, как заставить NodeLists и атрибуты узла поддерживать итераторы, то есть
for(Node n: nodelist)
интерфейс.Используйте это как:
и
Код:
источник
Прочитайте файл XML, используя XPathFactory,
SAXParserFactory
иStAX (JSR-173)
.Используя XPath получить узел и его дочерние данные.
XML-документ
Выход для данного XPathExpression:
Смотрите эту ссылку для нашей собственной реализации
NamespaceContext
источник