【问题标题】:XML Parsing with Java: <element name ="doctype"> [duplicate]使用 Java 进行 XML 解析:<element name ="doctype"> [重复]
【发布时间】:2012-07-20 11:54:05
【问题描述】:

可能重复:
how to retrieve element value of XML using Java?

我正在尝试使用 dom 解析带有 java 的 xml 文件。 xml 看起来像这样:

<documents>
  <document>
    <element name="doctype">
      <value>Circular</value>
    </element>
  </document>
</documents>

获取根节点“documents”和子节点“document”很容易。但是我无法获取名为“doctype”的元素的值(我想将值“Circular”存储在数据库中)。有人可以帮帮我吗?

【问题讨论】:

  • 为什么你不能得到那个元素?向我们展示您的代码。
  • doc.getElementsByTagName("document").item(0).getNodeName() doc 是我的文档构建器,我用它来解析 xml 文件。如果我打印这个,将显示结“文档”。但我不知道如何获取元素值。
  • 抱歉,这并没有真正帮助
  • 如果我这样写: System.out.println(doc.getElementsByTagName("data").item(0).getChildNodes().item(0).getNodeValue());一个 Nullpointerexeption 出来了
  • 我建议使用 Java SE 5 中包含的 XPath API 而不是 DOM API:stackoverflow.com/a/4077986/383861

标签: java xml parsing elementname


【解决方案1】:

您可以使用以下 XPath 来获取您要查找的数据:

/documents/document/element[@name='doctype']/value

演示

以下演示代码演示了如何针对您的 DOM 执行该 XPath。此应用程序将在任何标准 Java SE 5(或更新版本)安装中运行。

package forum11578831;

import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.Document;

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document dDoc = builder.parse("src/forum11578831/input.xml");

        XPath xPath = XPathFactory.newInstance().newXPath();
        String string = (String) xPath.evaluate("/documents/document/element[@name='doctype']/value", dDoc, XPathConstants.STRING);
        System.out.println(string);
    }

}

input.xml

我已扩展 XML 文档以包含具有 name 属性的 element 元素和 doctype 以外的值,以证明 XPath 有效。

<documents>
  <document>
    <element name="foo">
      <value>FOO</value>
    </element>
    <element name="doctype">
      <value>Circular</value>
    </element>
    <element name="bar">
      <value>BAR</value>
    </element>
  </document>
</documents>

输出

执行 XPath 的结果就是您正在寻找的 String

Circular

【讨论】:

  • 非常感谢,不是很好用。你为我节省了很多时间!!!
猜你喜欢
  • 2018-11-22
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 2011-11-26
  • 2010-09-25
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多