快速业务通道

LINQ学习笔记:XML命名空间

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13

名称与命名空间

与.NET类型可以拥有命名空间一样, XML元素和属性也同样可以拥有命名空间.

XML命名空间主要完成两件事情. 首先, 与C#的命名空间一样, 它们可以帮助避免命名冲突. 当你要合并来自两个不同XML文件的时候这可能会成为一个问题. 其次, 命名空间赋予了名称一个绝对的意义. 例如, 名称”nil” 可以代表任何意思, 然而, 如果和http://www.w3.org/2001/XMLSchema-instance命名空间一起, “nil”表示类似于C#当中null的意思, 并且有特定的规则指示其如何被应用.

XML的命名空间是使用xmlns属性来定义的:

   1: <customer xmlns="OReilly.Nutshell.CSharp"/>

xmlns是一个特殊的保留属性. 当我们这样使用时, 它主要执行两个功能:

  • 它为有疑问的元素指定了一个命名空间
  • 它为所有后代元素指定了一个默认的命名空间

我们也可以使用一个前缀(prefix)指定命名空间——这可以用来避免重复.主要有两个步骤——定义前缀和使用前缀. 我们也可以类似下面的做法将它们同时定义:

   1: <nut:customer xmlns:nut="OReilly.Nutshell.CSharp"/>

两件不同的事情在这里产生. 在右边, xmlns:nut=”…”定义了一个前缀叫做nut并使其对于元素本身以及它所有的后代元素都是可用的. 在左边, nut:customer应用了最新定义的前缀到customer元素上.

一个被定义了前缀的元素不会为它的后代元素定义默认的命名空间. 在下面的XML片段中, firstname包含一个空的命名空间:

   1: <nut:customer nut:xmlns="OReilly.Nutshell.CSharp">
   2:   <firstname>Joe</firstname>
   3: </customer>

为了将OReilly.NutShell.CSharp的前缀给予firstname, 我们必须使用下面的做法:

   1: <customer
   2:   xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
   3:   xmlns:z="http://schemas.microsoft.com/Serialization/">
   4:   ...
   5: </customer>

我们也可以将命名空间赋值到属性上, 不同之处在于它总是要求一个前缀. 例如:

   1: <customer
   2:   xmlns:nut="OReilly.Nutshell.CSharp" nut:id="123"  />

另一个不同之处在于一个未经修饰的属性总是包含一个空的命名空间: 其永远不会从父元素继承一个默认的命名空间.

在X-DOM当中指定命名空间

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号