LINQ 步步学-LINQ to XML

作者:vkvi 来源:千一网络(原创) 日期:2009-8-22

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 则比较自由,可以直接指定任意层次的节点。

相关阅读

你前面那位网友看了:SQL Server 2005 Express Edition

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
  • 1 楼:评论
    很好很强大!!学习,学习了!
  • 2 楼:评论
  • 3 楼:评论
    dfg
  • 4 楼:评论
    <input type="text" style="width:300px;"/>
  • 5 楼:评论
    linq 确实方便很多了
  • 6 楼:评论7777
    谔谔
  • 7 楼:评论
    哈哈 后面的段子很经典
  • 8 楼:评论
    good
  • 9 楼:评论
    very good
  • 10 楼:评论
    &nbsp;
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他