Используя регулярные выражения в 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')]