JAXP是Java平台处理XML的标准可插拔API,统一支持解析、转换、验证和查询四类操作,通过工厂类屏蔽底层实现差异,需注意XXE等安全配置。
JAXP 是 Java 平台中处理 XML 的标准接口层,不是具体解析器,而是一套“可插拔”的抽象 API,让你的代码不绑定某个厂商的 XML 实现(比如 Xerces、Woodstox),换解析器不用改业务逻辑。
它统一支持四类 XML 操作:
//book[@category='fiction']/title
所有功能都从这几个工厂类开始

DocumentBuilder),适合需随机访问、修改 XML 的场景SAXParser),内存占用低,适合大文件或只读遍历Transformer),支持样式转换和序列化输出直接调用 DOM 或 SAX 接口会硬编码依赖某个解析器(如 org.apache.xerces.parsers.DOMParser)。JAXP 的价值在于:
META-INF/services)可动态切换底层实现JAXP 默认配置可能开启危险特性,处理不可信 XML 时必须显式禁用:
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
factory.setAttribute("http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit", 0)
基本上就这些。它不复杂但容易忽略细节——尤其是安全配置和工厂获取方式。用对了,XML 处理就稳了。