【问题标题】:Parse XML to retrieve multiple values of same tag解析 XML 以检索同一标签的多个值
【发布时间】:2016-12-27 10:01:51
【问题描述】:

我是 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>

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

任何帮助将不胜感激

【问题讨论】:

标签: java xml xpath


【解决方案1】:

如果节点像在您的示例中那样直接构建,则很容易实现您想要做的事情。

你必须这样做

  • 使用您必须使用的任何内容 (jdom) 解析 xml 文件
  • 使用 XPath 查询检索 title 节点。 (//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 问题

【讨论】:

  • 您能否分享它的示例代码,因为我编写的代码确实有效。 javax.xml.xpath.XPath xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath(); org.w3c.dom.NodeList n1 = (org.w3c.dom.NodeList) xpath.evaluate("article/front/article-meta/supplementary-material/caption/title", xmlDocument, javax.xml.xpath.XPathConstants.节点集); for (int k = 0; k
  • 当我使用此代码时,会出现“javax.xml.transform.TransformerException:XPath 中的未知错误”。异常即将到来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 2017-06-15
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
相关资源
最近更新 更多