java - Java中的Xpath - 返回搜索结果标签位置

标签 java xml xpath

我想在 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 节点集是一个没有重复项的集合,因此您的代码不符合您的预期。因此

  1. 选择"//tag[text()=333]/
  2. 对于每个节点,选择 ancestor::* 并从此结果集创建输出字符串。

关于java - Java中的Xpath - 返回搜索结果标签位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35695624/

相关文章:

java - 如何在java swing中捕获关闭事件

java - JAXB 和复合模式

python - NoSuchElementException : Message: Unable to locate element while trying to click on the button VISA through Selenium and Python

xml - 根据 XSLT 中的子节点值选择节点

java - 是否可以在 java swing 应用程序中运行 osmdroid

Java Multipart POST 从 Web Api 服务器返回不支持的 MediaType

Java 字节数组到字符串到字节数组

java - 如何删除显示应用程序名称的标题而不是标题栏本身?

java - 如何将 ArrayList 写入 XML 文件?

java - 如何通过文本来识别元素?