LINQto XML

mac2022-06-30  41

XML 是个好东西,但查询 XML 真的不方便,自从有了 LINQ to XML 后,一切改变了。

假设有 XML 文件如下:

<?xml version="1.0" encoding="utf-8" ?> <company>     <name engName="cftea">千一网络</name>     <employees>         <employee>             <name age="29">张龙</name>         </employee>         <employee>             <name age="28">赵虎</name>         </employee>     </employees> </company>

我们用 LINQ to XML 去查 engName 的值,代码如下:

System.Xml.Linq.XDocument xd = System.Xml.Linq.XDocument.Load(Server.MapPath("Company.xml")); var engName = from x in xd.Element("company").Element("name").Attributes()               where x.Name == "engName"               select x.Value; Response.Write(engName.First<string>());

显示为 cftea。

说明:xd.Element("company").Element("name") 并不包括 employees 中的 name 节点。

同样用上面的 XML 文件,查询年龄 > 28 岁的雇员:

System.Xml.Linq.XElement xe = System.Xml.Linq.XElement.Load(Server.MapPath("Company.xml")); var employees = from emp in xe.Element("employees").Elements()                 where Convert.ToInt32(emp.Element("name").Attribute("age").Value) > 28                 select new { Name = emp.Element("name").Value, Age = emp.Element("name").Attribute("age").Value }; foreach (var employee in employees) {     Response.Write(employee.Name + "<br>"); }

emp in xe.Element("employees").Elements() 实际上表示将 employees 的儿子节点存在 emp 中。

XDocument 与 XElement

两个例子中,一个用了 XDocument、一个用了 XElement,二者的区别是什么呢?我们拿第二个例的 from 语句来作个对比:

from emp in xd.Element("company").Element("employees").Elements() from emp in xe.Element("employees").Elements()

可以看出:如果使用 XDocument,则需要从根节点,一步一步往下;而使用 XElement 则比较自由,可以直接指定任意层次的节点

转载于:https://www.cnblogs.com/deepwishly/archive/2009/12/25/2551340.html

相关资源:linq to sql 、linq to xml 、linq to object
最新回复(0)