我在使用正则表达式以及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的文本节点呢。
请让我知道怎么做。
感谢
答案 0 :(得分:2)
您可以使用contains()
功能,或者如果您真的想使用正则表达式,可以使用matches()
函数
"//text[contains(text(), 'dog goes woof')]"
答案 1 :(得分:1)
您需要在xpath中使用contains,例如//text()[contains(., 'dog goes woof')]