Java DOM解析XML怎么用 Java DOM API详解

8次阅读

java dom解析xml的核心是将整个文档加载进内存构建树状结构,通过API遍历、查询、修改节点;适合中小型文件,但内存占用高且不支持流式处理。

Java DOM解析XML怎么用 Java DOM API详解

Java DOM解析XML,核心是把整个XML文档加载进内存,构建成一棵树状结构,然后通过标准API遍历、查询、修改节点。它适合中小型XML文件,操作直观,但内存占用高、不支持流式处理。

DOM解析的基本步骤

使用Java内置的javax.xml.parsers.DocumentBuilderDocumentBuilderFactory完成解析:

  • 创建DocumentBuilderFactory实例(线程不安全,建议每次新建或复用时注意同步)
  • 通过工厂获取DocumentBuilder
  • 调用parse()方法加载XML(支持File、Inputstream、URL等输入源)
  • 得到Document对象,即整棵DOM树的根节点

常用节点类型与操作方式

DOM中所有元素都继承node接口。关键子接口包括:

  • Element:代表一个XML标签,可用getElementsByTagName()getAttribute()getTagName()等方法操作
  • Attr:表示属性节点,通常通过Element#getAttributeNode()或直接用getAttribute()获取值
  • Text:文本内容节点,需调用getNodeValue()getTextContent()(后者会自动合并相邻Text节点)
  • Document:顶层节点,也是Node的子类,提供创建新节点(如createElement)、导入节点等能力

读取XML示例(带错误处理)

以下代码读取<a href="https://seo.sqjnqi.com/tag/java%e7%bc%96%e7%a8%8b/"><b>java编程</b></a>并提取信息:

立即学习Java免费学习笔记(深入)”;

try {     DocumentBuilderFactory factory = DocumentBuilderFactory.newinstance();     DocumentBuilder builder = factory.newDocumentBuilder();     Document doc = builder.parse(new File("book.xml"));      // 获取所有book元素     NodeList bookList = doc.getElementsByTagName("book");     for (int i = 0; i < bookList.getLength(); i++) {         Element book = (Element) bookList.item(i);         String id = book.getAttribute("id"); // 获取属性         String title = book.getElementsByTagName("title").item(0)                         .getTextContent(); // 获取子元素文本         System.out.println("ID: " + id + ", Title: " + title);     } } catch (ParserConfigurationException | SAXException | IOException e) {     e.printStackTrace(); }

创建和修改XML文档

DOM不仅可读,还能动态构建和更新XML:

  • Document#createElement()创建新元素,createTextNode()创建文本节点
  • Node#appendChild()insertBefore()组织父子关系
  • 修改属性用Element#setAttribute(),修改文本内容用setTextContent()
  • 保存到文件需借助TransformerFactory(JAXP的一部分),将Document转为Source再写入Result

text=ZqhQzanResources