如何使用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
相关产品推荐
相关产品推荐

