解析XML以检索同一标记的多个值

时间:2016-12-27 10:01:52

标签: java xml xpath

我是XPath和XML的新手。我试图从标签中检索特定标签的值。以下树结构中的特定标记

<article>
<front>
<article-meta>
<supplementary-material id="SM2379">
<caption><title>arg_3.docx</title></caption>
</supplementary-material>
<supplementary-material id="SM2375">
<caption><title>arg_2.docx</title></caption>
</supplementary-material>
<supplementary-material id="SM2373">
<caption><title>Sulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.docSulental_material.doc</title></caption>
</supplementary-material>
</article-meta>
</front>
</article>

我想要检索所有&#39; 标题&#39;此示例文件中的标记以及&#39; id &#39;父标签。由于我需要添加到现有功能,我有一些限制,如使用jdom,可以使用xpath等

真正感谢任何帮助

1 个答案:

答案 0 :(得分:0)

如果节点像你的例子一样直接构建,那么很容易实现你尝试做的事情。

你必须

  • 使用您必须使用的任何内容解析xml文件(jdom)
  • 使用XPath查询检索标题节点。 (//title将在您的情况下执行)
  • 获取祖父母元素的ID

这些任务应该很容易处理!

除了评论:

您提供的代码:

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList n1 = (NodeList) xpath.evaluate("article/front/article-meta/supplementary-material/caption/title", document, XPathConstants.NODESET);
for (int k = 0; k < n1.getLength();k++)
{
    System.out.println(n1.item(k).getNodeName()+" : "+n1.item(k).getTextContent());
}

工作得很好。但是您提供的代码在我的IDE中有一些 UTF-8问题