在xpath和xml中使用正则表达式

时间:2013-09-18 07:01:10

标签: xml regex xpath

我在使用正则表达式以及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时,它只选择第一个文本节点。我想选择其他包含dog woof的文本节点。那么我怎么能在xpath表达式中指定检查包含dog的文本节点呢。

请让我知道怎么做。

感谢

2 个答案:

答案 0 :(得分:2)

您可以使用contains()功能,或者如果您真的想使用正则表达式,可以使用matches()函数

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

答案 1 :(得分:1)

您需要在xpath中使用contains,例如//text()[contains(., 'dog goes woof')]