我是否可以使用xpath表达式来选择其整个文本内容(包括其后代')包含特定字符串的项目?
我的xml是这样的:
<item>
<sentence>Good morning. Today is fine.</sentence>
<entry>
<keywords>
<keyword>fooA</keyword>
<keyword>fooB</keyword>
</keywords>
</entry>
<entry>
<keywords>
<keyword>fooC</keyword>
<keyword>fooD</keyword>
</keywords>
</entry>
</item>
<item>
<sentence>It's raining, we'd better get a raincoat.</sentence>
<entry>
<keywords>
<keyword>barA</keyword>
<keyword>barB</keyword>
</keywords>
</entry>
<entry>
<keywords>
<keyword>barC</keyword>
<keyword>barD</keyword>
</keywords>
</entry>
</item>
我想得到的是。如果我查找任何单词或单词:
"Good morning. Today is fine. fooA fooB fooC fooD"
像“早晨”,“fooC”或“精美的fooB”,我会得到第一个项目。
如果我查找任何单词或单词:
"It's raining, we'd better get a raincoat.. barA barB barC barD"
像“下雨”,“更好”,“更好的barD”,“获得barB barA”,我得到第二项。
我正在尝试使用contains()和concat(),但似乎我无法在xpath表达式中连接不同级别的所有后代。
contains(concat(sentence/text(),entry/keywords/keyword/text()),"barC")
不工作。 concat()只将第一个文本节点转换为字符串。
提前致谢!!
答案 0 :(得分:1)
这似乎工作得很好
//item[contains(string(), 'barC')]
在这里演示 - http://www.xpathtester.com/xpath/da560511673f56c89386aecfc15a4a63
如果您只想使用特定的子节点,请尝试使用
//item[(sentence|entry)[contains(string(), 'barC')]]
演示 - http://www.xpathtester.com/xpath/8236042dbcceea163665b015aa4da180