javax.xml.namespace

接口
public interface NamespaceContext

用于只读 XML 名称空间上下文处理的接口。

XML 名称空间具有以下属性:

  • 名称空间 URI:表示为 URI(前缀将绑定到该 URI)的名称空间名。
  • 前缀:语法上,这是跟在名称空间声明中的 XMLConstants.XMLNS_ATTRIBUTE ("xmlns") 之后的属性名称的一部分

示例:<element xmlns:prefix="http://Namespace-name-URI">

所有 get*(*) 方法都在名称空间 URI 和前缀解析的当前范围中进行操作。

注意,可以将名称空间 URI 绑定到当前范围中的多个 前缀。当多个 XMLConstants.XMLNS_ATTRIBUTE ("xmlns") 名称空间声明出现在同一 Start 标记中,且引用同一名称空间 URI 时,便发生了这种情况,例如

 <element xmlns:prefix1="http://Namespace-name-URI"
          xmlns:prefix2="http://Namespace-name-URI">
 
当在逻辑父元素结构层次中的多个 XMLConstants.XMLNS_ATTRIBUTE ("xmlns") 名称空间声明中使用同一名称空间 URI 时,也将发生这种情况。例如
 <parent xmlns:prefix1="http://Namespace-name-URI">
   <child xmlns:prefix2="http://Namespace-name-URI">
     ...
   </child>
 </parent>
 

只能将前缀绑定到当前范围中的单个 名称空间 URI。

从以下版本开始:
1.5
另请参见:
有关公共 XML 值的声明,请参见 javax.xml.XMLConstants, XML Schema Part2: Datatypes, Namespaces in XML, Namespaces in XML Errata

方法摘要
 String getNamespaceURI(String prefix)
          获取绑定到当前范围中的前缀的名称空间 URI。
 String getPrefix(String namespaceURI)
          获取绑定到当前范围中名称空间 URI 的前缀。
 Iterator getPrefixes(String namespaceURI)
          获取绑定到当前范围中名称空间 URI 的所有前缀。
 

方法详细信息

getNamespaceURI

String getNamespaceURI(String prefix)

获取绑定到当前范围中的前缀的名称空间 URI。

当通过前缀请求名称空间 URI 时,下表描述了针对所有可能的前缀值返回的名称空间 URI 值:

getNamespaceURI(prefix) 返回指定的前缀值
前缀参数 名称空间 URI 返回值
DEFAULT_NS_PREFIX ("") 返回当前范围中的默认名称空间 URI;如果不存在,则返回 XMLConstants.NULL_NS_URI("")
绑定的前缀 绑定到当前范围中的前缀的名称空间 URI
未绑定的前缀 XMLConstants.NULL_NS_URI("")
XMLConstants.XML_NS_PREFIX ("xml") XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace")
XMLConstants.XMLNS_ATTRIBUTE ("xmlns") XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/")
null IllegalArgumentException 被抛出

参数:
prefix - 要查找的前缀
返回:
绑定到当前范围中的前缀的名称空间 URI
抛出:
IllegalArgumentException - 当 prefixnull

getPrefix

String getPrefix(String namespaceURI)

获取绑定到当前范围中名称空间 URI 的前缀。

要获取绑定到当前范围中名称空间 URI 的所有前缀,请使用 getPrefixes(String namespaceURI)

当通过名称空间 URI 请求前缀时,下表描述了针对所有名称空间 URI 值返回的前缀值:

对指定的名称空间 URI 调用 getPrefix(namespaceURI) 的返回值
名称空间 URI 参数 返回的前缀值
<默认名称空间 URI> XMLConstants.DEFAULT_NS_PREFIX ("")
绑定名称空间 URI 绑定到当前范围中名称空间 URI 的前缀,如果将多个前缀绑定到当前范围中的名称空间 URI,则返回其选择与实现有关的任意单个前缀
未绑定的名称空间 URI null
XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace") XMLConstants.XML_NS_PREFIX ("xml")
XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/") XMLConstants.XMLNS_ATTRIBUTE ("xmlns")
null IllegalArgumentException 被抛出

参数:
namespaceURI - 要查找的名称空间的 URI
返回:
绑定到当前上下文中名称空间 URI 的前缀
抛出:
IllegalArgumentException - 当 namespaceURInull

getPrefixes

Iterator getPrefixes(String namespaceURI)

获取绑定到当前范围中名称空间 URI 的所有前缀。

按任意与实现相关顺序返回 String 元素上的迭代器。

Iterator 可修改。例如 remove() 方法将抛出 UnsupportedOperationException

当通过名称空间 URI 请求前缀时,下表描述了针对所有名称空间 URI 值返回的前缀值:

对指定的名称空间 URI 调用 getPrefixes(namespaceURI) 的返回值
名称空间 URI 参数 返回的前缀值
绑定的名称空间 URI,包括 <默认名称空间 URI> 前缀上的 Iterator,以任意与实现相关顺序绑定到当前范围中的名称空间 URI
未绑定的名称空间 URI Iterator
XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace") 一个元素设置为 XMLConstants.XML_NS_PREFIX ("xml") 的 Iterator
XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/") 一个元素设置为 XMLConstants.XMLNS_ATTRIBUTE ("xmlns") 的 Iterator
null IllegalArgumentException 被抛出

参数:
namespaceURI - 要查找的名称空间的 URI
返回:
用于绑定到当前范围中名称空间 URI 的所有前缀的 Iterator
抛出:
IllegalArgumentException - 当 namespaceURInull