DOM Level 3是面向XML处理的增强标准,新增Core、Load and Save、Validation三大模块;其中Core支持XML元信息控制与空文档构建,Load and Save实现XML解析与序列化(含格式选项),Validation提供Schema/DTD校验接口;Java需通过DOMImplementationRegistry显式获取LS实现才能使用。

Java中DOM Level 3主要解决XML文档的加载、保存、验证和信息集控制问题,它不是用来操作HTML页面的(那是HTML DOM的事),而是面向XML处理的增强标准。
它在DOM Level 2基础上新增了三个关键模块,其中两个被主流Java解析器实际支持:
DOM Level 3 Core(核心扩展)
提供对XML文档元信息的精细控制能力,比如:
-
getXmlVersion():获取XML声明中的version(如"1.0") -
getXmlEncoding():读取encoding属性(如"UTF-8") -
getXmlStandalone():判断是否为standalone="yes/no" - 引入bootstrapping机制,让解析器能从空文档开始构建结构,支持动态生成XML
DOM Level 3 Load and Save(加载与保存)
这是Java里最常被用到的部分,用于:
立即学习“Java免费学习笔记(深入)”;
- 把XML字符串或输入流解析成Document对象(
DOMImplementationLS.load()) - 把内存中的Document对象序列化回XML文件或字符串(
LSSerializer.write()) - 支持设置缩进、编码、是否省略XML声明等输出格式选项
例如,用Java把test1.xml读进来、修改后写入test2.xml,并带Schema验证,就依赖这个模块。
DOM Level 3 Validation(验证)
定义了基于DTD或XML Schema校验文档合法性的接口,如:
-
Document.normalizeDocument()可触发验证 -
Element.getSchemaTypeInfo()获取类型信息
但现实中多数Java XML解析器(如Xerces)虽部分支持,却不完全实现该模块;开发中更常用SAX或StAX配合Schema进行校验。
注意:Java自带的
javax.xml.parsers.DocumentBuilder默认只支持Level 2;要使用Level 3功能,需显式获取DOMImplementationRegistry,加载支持LS(Load/Save)的实现,比如:DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("LS");
不复杂但容易忽略——Level 3的价值不在“新功能多”,而在于让XML处理真正具备可逆性(读→改→写不丢格式/声明)和可验证性(结构+语义双保障)。










