我想在 XML 文件中搜索文本值并返回每个搜索结果的位置。
假设我有这个 xml 文件:
<tag>
<tag>
<tag>333</tag>
</tag>
<tag>
<tag>
<tag>333</tag>
</tag>
</tag>
</tag>
我将搜索值“333”:
String expression = "//tag[text()=333]/ancestor::*";
NodeList email = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
String resultString = "";
for(int i=0; i< email.getLength();i++){
Element labTest = (Element) email.item(i);
resultString += labTest.toString().replace("[tag: null]","tag[0]") + " ";
}
我希望它返回的是 2 个节点,每个节点包含元素的位置。搜索 333 的输出将是:
tag[0] tag[0]
tag[0] tag[0] tag[0]
此时搜索返回:
tag[0] tag[0] tag[0] tag[0]
我怎样才能实现这个目标?我应该以不同的方式处理这个问题吗?
最佳答案
XPath 节点集是一个没有重复项的集合,因此您的代码不符合您的预期。因此
- 选择
"//tag[text()=333]/
- 对于每个节点,选择
ancestor::*
并从此结果集创建输出字符串。
关于java - Java中的Xpath - 返回搜索结果标签位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35695624/