快速业务通道

LINQ学习笔记:XML命名空间

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

然后,当X-DOM读取或输出XML的时候, 它将会应用默认的命名空间:

   1: Console.WriteLine (data.ToString( ));
   2:
   3: OUTPUT:
   4:   <data xmlns="http://domain.com/xmlspace">
   5:     <customer>Bloggs</customer>
   6:     <purchase>Bicycle</purchase>
   7:   </data>
   8:
   9: Console.WriteLine
  10:   (data.Element (ns + "customer").ToString( ));
  11:
  12: OUTPUT:
  13:   <customer xmlns="http://domain.com/xmlspace">Bloggs
  14:   </customer>

如果你在构造XElement的子节点是没有指定命名空间——换句话说:

   1: XNamespace ns = "http://domain.com/xmlspace";
   2: var data = new XElement (ns + "data",
   3:              new XElement ("customer", "Bloggs"),
   4:              new XElement ("purchase", "Bicycle")
   5:            );
   6: Console.WriteLine (data.ToString( ));

你将会得到如下的输出:

   1: <data xmlns="http://domain.com/xmlspace">
   2:   <customer xmlns="">Bloggs</customer>
   3:   <purchase xmlns="">Bicycle</purchase>
   4: </data>

另一个陷阱可能使你浏览X-DOM的时候会失败:

   1: XNamespace ns = "http://domain.com/xmlspace";
   2: var data = new XElement (ns + "data",
   3:              new XElement (ns + "customer", "Bloggs"),
   4:              new XElement (ns + "purchase", "Bicycle")
   5:            );
   6: XElement x = data.Element (ns + "customer");   // ok
   7: XElement y = data.Element ("customer");        // null

如果你没有指定命名空间来构造X-DOM树, 你可以随后类似下面这样将一个单一的命名空间赋值到每一个元素:

   1: foreach (XElement e in data.DescendantsAndSelf( ))
   2:   if (e.Name.Namespace == "")
   3:     e.Name = ns + e.Name.LocalName;

前缀

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号