You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java提取XML文件中所有标签的name属性值

实现方案

你不需要逐层嵌套循环遍历节点,直接获取文档内所有元素,统一判断是否存在name属性即可,代码更简洁且适配任意XML结构调整:

修正后完整代码

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class XmlTest {
    public static void main(String[] args) {
        try {
            File inputFile = new File("xmlPrueba.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(inputFile);
            doc.getDocumentElement().normalize();
            System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 

            // 通配符获取文档内所有元素节点
            NodeList allNodes = doc.getElementsByTagName("*");
            for (int i = 0; i < allNodes.getLength(); i++) {
                Node node = allNodes.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    // 仅输出存在name属性且值不为空的节点
                    String nameVal = element.getAttribute("name");
                    if (!nameVal.trim().isEmpty()) {
                        System.out.println(element.getNodeName() + " Name : " + nameVal);
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出说明

针对你提供的XML示例,运行后会按节点出现顺序输出所有带name属性的节点值:

Root element :ObjectConfig
ObjectAttribute Name : A
Reference Name : B
AttributeSource Name : C
Reference Name : D
Reference Name : E
AttributeTarget Name : F
Reference Name : G
ObjectAttribute Name : H
Reference Name : I
AttributeSource Name : J
Reference Name : K
Reference Name : L
AttributeTarget Name : M
Reference Name : N

内容的提问来源于stack exchange,提问作者Pradyoth cherry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:18:03