Используя регулярные выражения в xpath и xml

У меня есть небольшая проблема в использовании регулярных выражений наряду с XML и XPath.

У меня есть XML-файл, как это

messages.xml

<message>
  <text>dog goes woof</text>
</message>
<message>
  <text>cat goes meow, dog goes woof, fish goes blub</text>
</message>

а затем у меня есть выражение xpath, которое позволяет мне выбрать текстовый узел, в котором есть текстовый узел, так как собака уходит, как это

   String expression = "//text[.='dog goes woof']";
   NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(messages, XPathConstants.NODESET);

здесь "messages" - переменная Document, которая ссылается на файл messages.xml.

когда я перебираю nodeList, он выбирает только первый текстовый узел. Я хочу выбрать другой текстовый узел, который содержит собачий уши. Так как же я могу указать в выражении xpath, чтобы проверить наличие текстовых узлов, в которых содержится собака?

пожалуйста, дайте мне знать, как это сделать.

Спасибо

2 ответа

Вы можете использовать contains() функция или если вы действительно хотите использовать регулярное выражение, вы можете использовать matches() функция

"//text[contains(text(), 'dog goes woof')]"

Вам нужно использовать содержит в xpath, например, как //text()[contains(., 'dog goes woof')]

Другие вопросы по тегам