java - 使用Java进行XML解析: <element name ="doctype">

标签 java xml parsing elementname

Possible Duplicate:
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”存储在数据库中)。有人可以帮我吗?

最佳答案

您可以使用以下 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

关于java - 使用Java进行XML解析: <element name ="doctype">,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578831/

相关文章:

java - 哈弗斯MANAGED_CLASS_MAPPING_ERROR

java - 为什么JVM CMS(concurrent mark-and-sweep) GC需要两次停顿?

xml - 如何搜索 Maven 插件中的依赖项以查找特定文件?

xml - 有一个 HTML5 的子集或约束可以完美映射到 XHTML5,反之亦然?

css - 有没有办法修改 Jersey 生成的 XML 响应以包含样式表信息?

ios - 数据 > JSON - Swift3 - 转换和解析

java - stdin 数据流的第一个字节是否会触发 bash 命令运行?

java - 如何找到我的文件夹的路径

java - 如何在java上对某些文本进行编号?

java - 将 getText() 与 double 一起使用