有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从xml文件中获取特定元素

假设我有两个xml文件。两者都包含一个特定的元素(比如“name”),但其中一个元素的位置与另一个xml文件不同

例:

第一个xml文件:

<root>
 <element1>text1</element1>
 <element2>
  <name value="firstname">John</name>
 <element2>
</root>

第二个xml文件:

<root>
 <element1>text1</element1>
 <name value="firstname">Michael</name>
 <element2>text2</element2>
</root>

在不知道这些元素之前的位置的情况下,获取这些元素最有效的运行时方法是什么

(很抱歉,如果stackoverflow上已经有答案,但我没有找到答案)


共 (2) 个答案

  1. # 1 楼答案

    一种不一定最有效,但更方便的方法是使用XPath查询:

    File f = new File("path/to/file.xml");
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(f);
    XPathFactory xPathfactory = XPathFactory.newInstance();
    XPath xpath = xPathfactory.newXPath();
    XPathExpression expr = xpath.compile("//name");
    NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
    

    查询:

    "//name"
    

    指:

    Search for all <name> tags, regardless of their depth. You can then process the NodeList.

    尽管XPath查询涉及一些开销,但在许多情况下,当前的技术已经足够,而且很容易修改查询(如果出于某种原因,您必须稍微修改查询怎么办?)

  2. # 2 楼答案

    您可能需要研究Xpath。请参见How to read XML using XPath in Java了解您的具体情况,xpath将是“//name”double/means anywhere是根目录下的当前文档