zero0r1

导航

LINQ to XML

LINQ to XML
LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。
LINQ to XML 将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。
但是,LINQ to XML 与 DOM 不同:它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 C# 中的语言功能。
 
例如,示例 Sample XML Documents (LINQ to XML)  通过使用 LINQ to XML
,可以运行以下查询,以获取采购单每个项元素的部件号属性值:
  
XElement po = XElement.Load("PurchaseOrder.xml");  
IEnumerable<XElement> childElements =  
    from el in po.Elements()  
    select el; 

//print
foreach (XElement el in childElements) Console.WriteLine(el.Name);

 

您可能需要一个列表,列出Address的Type属性为Billing的数据,并根据Type排序。
  
XElement root = XElement.Load("PurchaseOrder.xml");  
IEnumerable<XElement> address =  
    from el in root.Elements("Address")  
    where (string)el.Attribute("Type") == "Billing"  
   orderby (string)item.Element("Type")  
    select el;
//print foreach (XElement el in address) Console.WriteLine(el);

 

再者您可能需要检索一个XML文件的集合并且删除它:

XElement root = new XElement();
IEnumerable<XElement> elList =
    from el in root.Elements()
    where (int)el >= 3
    select el;

elList.Remove();
//print
foreach (XElement el in address)  
    Console.WriteLine(el);  
 

 

除了这些 LINQ 功能以外,LINQ to XML 提供了改进的 XML 编程接口。 使用 LINQ to XML,您可以:
  • 从文件或流加载 XML。
  • 将 XML 序列化为文件或流。
  • 使用函数构造从头开始创建 XML。
  • 使用类似 XPath 的轴查询 XML。
  • 使用 AddRemoveReplaceWith 和 SetValue 等方法对内存 XML 树进行操作。
  • 使用 XSD 验证 XML 树。
  • 使用这些功能的组合,可将 XML 树从一种形状转换为另一种形状。

 

NOTE:需要注意的是LINQ查询表达式中的部分方法的执行方式是延迟执行.

XElement root = XElement.Load("PurchaseOrder.xml");  
IEnumerable<XElement> address =  
    from el in root.Elements("Address")  
    where (string)el.Attribute("Type") == "Billing"  
   orderby (string)item.Element("Type")  
    select el;
//print foreach (XElement el in address) Console.WriteLine(el);

以上代码高亮处:
  真正的结果并没有在变量中,当前的变量有两者角色其一存储查询,其二数据容器.
  address除非开始遍历其中的值,否则无论;投射,筛选,还是从from子句之后的一切都不会执行. 也许适合叫它'查询';

相关链接:

LINQ to XML 中的延迟执行和迟缓计算 (C#)

延迟执行示例 (C#)

 

posted on 2017-08-23 11:58  zero0r1  阅读(120)  评论(0)    收藏  举报