相关文章推荐
光明磊落的茶壶  ·  UTF-8 箭头 | 菜鸟教程·  11 月前    · 
拉风的猴子  ·  linux - sed ...·  1 年前    · 

XML 命名空间将 XML 文档中的元素和属性名称与自定义和预定义的 URI 关联起来。 要创建这些关联,您应为命名空间 URI 定义前缀,并使用这些前缀来限定 XML 数据中的元素和属性名称。 命名空间可防止元素和属性名称冲突,并允许以不同方式处理和验证同名的元素和属性。

声明命名空间

若要对某个元素声明命名空间,请使用 xmlns: 属性:

xmlns:<name>=<"uri">

其中, <name> 是命名空间前缀, <"uri"> 是用于标识命名空间的 URI。 在声明前缀后,可使用该前缀来限定 XML 文档中的元素和属性,并将它们与命名空间 URI 相关联。 因为命名空间前缀在整个文档中使用,所以它的长度应较短。

本示例定义两个 BOOK 元素。 第一个元素由前缀 mybook 限定,第二个元素由前缀 bb 限定。 每个前缀都与不同的命名空间 URI 相关联:

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

若要指示某个元素是特定命名空间的一部分,请向其添加命名空间前缀。 例如,如果 Author 元素属于 mybook 命名空间,则将其声明为 <mybook:Author>

命名空间在从声明点开始直至声明它的元素结束这一范围内有效。 在此示例中,在 BOOK 元素中定义的命名空间不适用于 BOOK 元素外部的元素(例如,Publisher 元素):

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

必须先声明命名空间,然后才可以使用它,但命名空间不一定出现在 XML 文档的顶部。

当您在 XML 文档中使用多个命名空间时,可以将一个命名空间定义为默认命名空间以产生外观更整洁的文档。 默认命名空间是在根元素中声明的,它适用于文档中的所有非限定元素。 默认命名空间只适用于元素,不适用于属性。

若要使用默认命名空间,请在该元素的声明中省略前缀和冒号:

<BOOK xmlns="http://www.contoso.com/books.dtd">  
</BOOK>

管理命名空间

XmlNamespaceManager 类存储命名空间 URI 及其前缀的集合,您可在此集合中查找、添加和删除命名空间。 在某些上下文中,需要使用此类以获得更佳 XML 处理性能。 例如,XsltContext 类使用 XmlNamespaceManager 以获得 XPath 支持。

命名空间管理器对命名空间不执行任何验证,而是假定前缀和命名空间已经过验证并符合 W3C 命名空间规范。

C#Visual Basic 中的 LINQ TO XML 不使用 XmlNamespaceManager 来管理命名空间。 若要了解如何在使用 LINQ to XML 时管理命名空间,请参阅 LINQ 文档中的使用 XML 命名空间 (C#)使用 XML 命名空间 (Visual Basic)

下面是可使用 XmlNamespaceManager 类执行的一些管理和查找任务。 有关更多信息和示例,请遵循指向每个方法或属性的引用页的链接。