获取所有XML节点的路径

JMK

我有一个示例XML,如下所示:

<message>
  <metadata> 
    <msg_id>1</msg_id>
    <client_type>type1</client_type>
  </metadata>
  <individual>
    <name>John</name>
    <surname>Smith</surname>
      <additional_information>
        <e_mail>[email protected]</e_mail>
        <phone_number>11110000</phone_number>
      </additional_information>
  </individual>
</message>

我的目标是获取输出,该输出将向我显示每个元素XML的路径,如下所示:

/message/metadata/msg_id
/message/metadata/client_type
/message/individual/name

等等。我该如何用Java处理呢?

提前非常感谢您的任何提示!

奥利维尔·博伊塞(OlivierBoissé)

您可以使用xPath通过表达式选择节点并打印每个节点的路径,

这是Java代码:

public static void main(String[] args) throws Exception {
    File file = new File("src/main/resources/file.xml");
    XPath xPath =  XPathFactory.newInstance().newXPath();
    String expression = "//*[not(*)]";

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = builderFactory.newDocumentBuilder();
    Document document = builder.parse(file);
    document.getDocumentElement().normalize();

    NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
    for(int i = 0 ; i < nodeList.getLength(); i++) {
        System.out.println(getXPath(nodeList.item(i)));
    }
}

private static String getXPath(Node node) {
    Node parent = node.getParentNode();
    if (parent == null) {
        return node.getNodeName();
    }
    return getXPath(parent) + "/" + node.getNodeName();
}

最终输出为:

文档/消息/元数据/ msg_id

文档/消息/元数据/ client_type

文件/信息/个人/名称

文件/讯息/个人/姓氏

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala:在XML中获取所有叶节点及其路径的最简单方法是什么?

来自分类Dev

自动获取所有节点xml

来自分类Dev

获取Groovy中XML节点的所有子节点的值

来自分类Dev

获取 XML 节点值和所有嵌套的列节点

来自分类Dev

使用python获取xml节点的所有父级

来自分类Dev

使用Javascript获取XML中所有节点的名称

来自分类Dev

使用python获取xml节点的所有父级

来自分类Dev

使用Javascript获取XML中所有节点的名称

来自分类Dev

获取与neo4j路径中的节点相关的所有节点

来自分类Dev

根据属性id查找并获取XML节点的所有子节点

来自分类Dev

使用 xml.etree.ElementTree 获取节点的所有子节点

来自分类Dev

XML 获取带有子节点的节点

来自分类Dev

获取关系中的所有节点,而不是所有节点

来自分类Dev

获取树的路径,但在python中的一条路径中将所有叶子oa节点

来自分类Dev

如何获取所有节点的名称和xml中xml的属性?

来自分类Dev

从XML中获取具有特定名称的所有节点的值

来自分类Dev

使用xml.etree.ElementTree获取子节点的所有实例

来自分类Dev

使用linq或xpath获取xml中的所有文本节点

来自分类Dev

使用属性获取XML树中所有节点的xpath-Python

来自分类Dev

返回节点中一次获取的所有XML元素

来自分类Dev

使用python打开albumdata.xml并获取所有图像路径

来自分类Dev

lxml:获取所有叶节点?

来自分类Dev

获取元素的所有子节点

来自分类Dev

从fancytree插件获取所有节点

来自分类Dev

Nokogiri获取所有HTML节点

来自分类Dev

如何从DOMDocument获取所有子节点?

来自分类Dev

获取与节点关联的所有ImageField

来自分类Dev

Networkx,获取节点的所有in_edges

来自分类Dev

从 Instagram URL 获取所有 Instagram 节点

Related 相关文章

热门标签

归档