XML DOM是将XML文档解析为内存中树形结构的编程接口,支持随机访问和节点增删改查,但因全量加载易致内存溢出。
XML文档对象模型(DOM)是一种将XML文档表示为内存中树形结构的编程接口。它把整个XML文件解析成由节点组成的层次化对象树,每个元素、属性、文本甚至注释都对应一个节点,程序可以通过标准API访问、修改、添加或删除这些节点。
DOM解析器会一次性读取整个XML文件,将其完全加载到内存中,并构建一棵完整的节点树
。根节点是Document对象,其下依次是元素节点(Element)、属性节点(Attr)、文本节点(Text)等。这种结构支持随机访问——比如可以直接通过getElementsByTagName("book")获取所有book元素,无需顺序遍历。
parentNode、childNodes、nextSibling)DOM树不是只有标签元素。一个简单的在DOM中至少包含三个节点:
注意:换行和缩进在默认解析下也可能生成Text节点,这常导致childNodes.length比预期多,实际开发中建议用element.children(只返回元素子节点)来规避。
当调用DocumentBuilder.parse()(Java)或DOMParser.parseFromString()(JavaScript)时,解析器执行以下动作:
这个过程是同步阻塞的,解析完成前程序无法继续执行后续逻辑。
基本上就这些。DOM本质是用通用树结构映射XML语法结构,方便代码以面向对象方式处理数据,但代价是内存开销和启动延迟。