学习LINQ查询时,经常会遇到LINQ查询XML文档问题,这里将介绍LINQ查询XML文档问题的解决方法。
LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以LINQ查询XML文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XML 与 DOM 不同:它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。
LINQ查询XML文档
- <?xml version="1.0" encoding="utf-8"?>
- <pets>
- <pet>
- <id>2</id>
- <name>Dog</name>
- <species>Some Kind of Cat</species>
- <sex>Female</sex>
- <startYear>1972</startYear>
- <endYear>1974</endYear>
- <causeOfDeath>Car</causeOfDeath>
- <specialQuality>Best mouser</specialQuality>
- </pet>
- <pet>
- <id>3</id>
- <name>Sam</name>
- <species>Labrador</species>
- <sex>Female</sex>
- <startYear>1973</startYear>
- <endYear>1980</endYear>
- <causeOfDeath>Old Age</causeOfDeath>
- <specialQuality>Great hunting dog</specialQuality>
- </pet>
- </pets>
载入文档后,XDocument或XElement的Elements()方法执行时返回IEnumrable<XElement>类型的子节点信息,Element()方法返回唯一的子节点信息。
查找所有pet的name。分别使用XDocument和XElement查找。
- XDocument document = XDocument.Load("MyPets.xml");
- XElement element = XElement.Load("MyPets.xml");
- var name = from pet in document.Elements("pets").Elements("pet")
- select pet.Element("name").Value;
- var pets = from pet in element.Elements("pet")
- select pet;
- Array.ForEach(pets.ToArray(), p=>Console.WriteLine(p.Element("name").Value));
- Array.ForEach(name.ToArray(), n => Console.WriteLine(n));
【编辑推荐】