javax.xml.namespace是 Java 标准库中用于处理 XML 命名空间(XML Namespaces)的核心包,自 Java 1.5(JDK 5)起引入,属于 JAXP(Java API for XML Processing)的一部分。该包主要提供以下关键接口和类:
QName:表示一个限定名称(qualified name),即带命名空间前缀的 XML 名称,如{http://example.com/ns}element。它由namespace URI、local part(本地名称)和可选的prefix(前缀)组成,常用于 DOM、SAX、StAX 和 JAXB 等 XML 处理 API 中标识元素或属性。NamespaceContext:接口,用于在 XPath、StAX 或其他上下文中解析前缀到命名空间 URI 的映射关系(例如prefix → "http://www.w3.org/2000/svg")。需用户自行实现(如SimpleNamespaceContext在测试中常用,但非 JDK 内置;生产中常配合javax.xml.xpath.XPathFactory使用)。
⚠️ 注意:
javax.xml.namespace属于Java SE 的标准 API,但自Java 9 引入模块系统后,它被包含在java.xml模块中;- 自Java 17 起仍受支持,但需注意:在 Java EE / Jakarta EE 迁移后,
javax.*包名已整体重命名为jakarta.xml.*(如jakarta.xml.namespace.QName),不过该变更不影响 Java SE 中的javax.xml.namespace—— 它在 JDK 中保持不变,仅 Jakarta EE 项目需适配; - 该包不提供命名空间解析器或 XML 解析功能本身,而是为其他 XML API(如
DocumentBuilder、XMLStreamReader)提供命名空间语义支持。
示例(使用 QName 构造带命名空间的元素名):
importjavax.xml.namespace.QName;QNamesvgRect=newQName("http://www.w3.org/2000/svg","rect","svg");System.out.println(svgRect.getNamespaceURI());// http://www.w3.org/2000/svgSystem.out.println(svgRect.getLocalPart());// rectSystem.out.println(svgRect.getPrefix());// svgjavax.xml.namespace
Interfaces
NamespaceContext
Interface for read only XML Namespace context processing.
Classes
QName
QName represents a qualified name as defined in the XML specifications: XML Schema Part2: Datatypes specification, Namespaces in XML, Namespaces in XML Errata.