快速业务通道

LINQ学习笔记:实例化一个X-DOM

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

实例化一个X-DOM

不使用Load或者Parse方法, 你还可以通过调用XContainer的Add方法手工实例化对象创建一棵X-DOM树

为了创建一个XElement和XAttribute, 你只需要提供一个名称和对应值

   1: XElement lastName = new XElement ("lastname", "Bloggs");
   2: lastName.Add (new XComment ("nice name"));
   3:
   4: XElement customer = new XElement ("customer");
   5: customer.Add (new XAttribute ("id", 123));
   6: customer.Add (new XElement ("firstname", "Joe"));
   7: customer.Add (lastName);
   8:
   9: Console.WriteLine (customer.ToString());

输出结果为:

   1: <customer id="123">
   2:   <firstname>Joe</firstname>
   3:   <lastname>Bloggs<!--nice name--></lastname>;
   4: </customer>

当构建一个XElement的时候, 一个value是可选的–你可以只提供元素名之后再添加内容. 注意当你确实提供了一个value的时候, 并不需要显式创建并增加一个XText的子节点. X-DOM会自动帮我们完成这项工作, 因此你可以简单地处理value字符串.

函数式构建

在之前的例子中, 我们通过代码很难收集到整个XML的结构. X-DOM支持另外一种实例化的模式, 称为函数式构建(来源于函数式编程). 使用函数式构建, 我们可以使用一个单一的表达式创建整棵树:

   1: XElement customer =
   2:   new XElement ("customer", new XAttribute("id", 123),
   3:     new XElement ("firstname","joe"),
   4:     new XElement ("lastname","bloggs",
   5:       new XComment ("nice name")
   6:     )
   7:   );

这会带来两个好处, 首先, 代码与整个XML的结构非常相似, 其次, 可以和LINQ查询集成. 例如, 可以通过下面的LINQ to SQL查询将结构直接输出为一个X-DOM:

   1: XElement query =
   2:   new XElement ("customers",
   3:     from c in dataContext.Customers
   4:     select
   5:       new XElement ("customer",
   6:         new XAttribute("id", c.ID),
   7:         new XElement ("firstname", c.FirstName),
   8:         new XElement ("lastname", c.LastName,
   9:           new XComment ("nice name")
  10:         )
  11:       )
  12:   );

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号