dom解析器将xml全量加载到内存构建符合w3c标准的节点树,支持随机访问但内存占用大;根为document节点,element、text、attribute等节点构成多叉树结构,适用于小到中型xml的查询与修改。

DOM解析器是一种将XML文档加载到内存中并构建成树状结构的工具,它让程序能以编程方式访问、修改和遍历整个文档内容。
DOM解析器的核心行为
它读取XML文件或字符串,逐个解析标签、属性、文本等内容,然后在内存中创建一组相互关联的对象(如Element、Text、Attribute等),这些对象共同构成一棵符合W3C DOM标准的树。
内存中的XML表示:节点树结构
DOM把XML文档映射为一个由节点(Node)组成的多叉树,每个节点代表文档中的一类成分:
- Document节点是根,代表整个XML文档,是所有其他节点的起点
-
Element节点对应开始标签(如
),可包含子节点,并拥有属性列表 -
Text节点保存元素内的纯文本内容(如
Java入门 中的“Java入门”) -
Attribute节点作为Element的附属信息(如
中的id="b001"),在DOM Level 2+中通常通过Element.getAttribute()访问,不作为子节点出现 - 注释(Comment)、处理指令(ProcessingInstruction)等也有对应节点类型
这种表示方式的特点
整棵树驻留在内存中,支持随机访问——你可以随时获取任意元素、向上查父节点、向下遍历子节点、横向找兄弟节点。但代价是内存占用与XML文档大小基本成正比,大文件容易引发OutOfMemoryError。
简单示例:XML片段对应的DOM片段
对于这段XML:
DOM树大致如下:
- Document
└─ Element "library"
└─ Element "book"(含属性id="b001")
└─ Element "title"
└─ Text "Java入门"
每个Element、Text都是独立对象,通过引用彼此连接。
基本上就这些。DOM不是流式处理,而是“全量加载+树形建模”,适合需要频繁查询和修改的小到中型XML文档。










