org.w3c.dom是java中遵循w3c dom规范的抽象接口包,无实现类,需通过documentbuilder等工厂获取实例;核心接口为document、element、node;text、cdatasection、comment为独立节点类型;domconfiguration等用于高级控制;不提供构造器、工具方法或json支持。

org.w3c.dom 是 Java 标准库中用于操作 XML(或 HTML)文档树结构的核心接口包,它不提供实现类,只定义了一套 W3C DOM 规范的抽象接口。你不能直接 new 它里面的任何东西,而是通过 DocumentBuilder、DOMImplementation 等工厂类获取具体实现(比如由 JAXP 默认提供的 Xerces 实现)。
核心接口:Document、Element、Node 是骨架
整个包围绕“树形文档模型”组织,最常用的是这三个接口:
-
Document:代表整个 XML 文档,是所有节点的根;通过DocumentBuilder.parse()或DocumentBuilder.newDocument()获取 -
Element:代表一个标签(如<user id="1"></user>),可调用getAttribute("id")、getElementsByTagName("name")等 -
Node:所有节点类型的父接口(Element、Text、Comment、Attr都继承它),统一了getParentNode()、getChildNodes()、appendChild()等基础操作
注意:NodeList 是动态集合(不是 List<node></node>!),每次调用 getFirstChild() 或遍历时都可能因文档变更而改变内容。
文本与特殊内容:Text、CDATASection、Comment
XML 中的纯文本、注释、CDATA 块在 DOM 中不是字符串,而是独立节点类型:
立即学习“Java免费学习笔记(深入)”;
什么是企业WAP网站,企业3G网站 企业WAP网站一般是指展示企业形象,介绍企业产品的WAP手机网站或者3G手机网站,让客户可以通过手机就能了解一个企业的大体情况和产品内容,从而更广泛的宣传企业,赢得更多的客户关注度!一般企业WAP网站包括:公司介绍,产品介绍,企业新闻动态,服务范围介绍,留言板,企业招聘信息等内容,如果有特殊要求,我们也会按照客户的要求定做。 企业为何要建设手机WAP网站,3
-
Text接口继承自CharacterData,表示元素内或属性中的字符数据;可用getTextContent()读,setTextContent()写 -
CDATASection是Text的子接口,用于包裹不被解析的原始文本(如 JS 代码块);创建需用Document.createCDATASection() -
Comment表示<!-- ... -->,也是CharacterData子类,可读写内容但不会被解析器当成标记处理
常见坑:Element.getTextContent() 会拼接所有后代 Text 节点,但跳过 Comment 和 CDATASection —— 如果你依赖文本顺序,得手动遍历 childNodes 并过滤类型。
辅助接口:DOMConfiguration、UserDataHandler、DOMErrorHandler
这些不是日常 CRUD 必用,但在控制解析/序列化行为或调试时很关键:
-
DOMConfiguration控制文档如何处理空格、是否校验、是否规范子节点等;例如doc.getDomConfig().setParameter("normalize-characters", true) -
UserDataHandler用于在节点复制、导入时传递自定义对象(比如保留原始行号或上下文元数据),需配合Node.setUserData()使用 -
DOMErrorHandler可注册到DOMConfiguration,捕获解析错误(如格式错误、命名空间冲突),但默认不抛异常 —— 很多人误以为 XML 解析失败会 throw,其实常静默失败
没实现、没工具类、也没 JSON 支持
这是最容易误解的一点:org.w3c.dom 包里:
- ❌ 没有
new DocumentImpl()这样的构造器 —— 所有实例必须来自工厂(DocumentBuilder/DOMImplementation) - ❌ 没有类似
XMLUtils.toString(doc)的便捷方法 —— 序列化 XML 必须用javax.xml.transform(Transformer) - ❌ 不支持 JSON、YAML 或 HTML5 特性(如
shadowRoot)—— 它严格对应 W3C DOM Level 2/3 Core 规范,仅限 XML/老式 HTML
如果你看到项目里直接 import org.w3c.dom.* 却没配 DocumentBuilderFactory 或处理 ParserConfigurationException,基本跑不起来 —— 接口再全,没工厂驱动就是一张白纸。









