linq xml 转

本文介绍如何使用 Descendants、Elements快速遍历XML节点

首先准备一个简单但是常见的XML
复制  保存<?xml version="1.0" encoding="utf-8" ?>
<userSet>
  <userInfo id="1" name="Guozhijian">
    <profile>
      <phoneNumber>13818181818</phoneNumber>
      <country>China</country>
    </profile>
  </userInfo>
  <userInfo id="2" name="Zhenglanzhen">
    <profile>
      <phoneNumber>13919191919</phoneNumber>
      <country>Korea</country>
    </profile>
  </userInfo>
</userSet><?xml version="1.0" encoding="utf-8" ?>
<userSet>
  <userInfo id="1" name="Guozhijian">
    <profile>
      <phoneNumber>13818181818</phoneNumber>
      <country>China</country>
    </profile>
  </userInfo>
  <userInfo id="2" name="Zhenglanzhen">
    <profile>
      <phoneNumber>13919191919</phoneNumber>
      <country>Korea</country>
    </profile>
  </userInfo>
</userSet>
测试一:
复制  保存private void Test1()
{
    XDocument xdoc = XDocument.Load(@"UserSet.xml");
    var users = from u in xdoc.Descendants("userInfo")
                where u.Attribute("id").Value == "1"
                select u;
    foreach (var u in users)
    {
        string name = u.Attribute("name").Value;
        Console.WriteLine(name);
    }
}
输出结果为:
Guozhijian

测试二
复制  保存private void Test2()
{
    XDocument xdoc = XDocument.Load(@"UserSet.xml");
    var users = from u in xdoc.Root.Elements("userInfo")
                where u.Element("profile").Element("phoneNumber").Value == "13919191919"
                select u;
    foreach (var u in users)
    {
        string name = u.Attribute("name").Value;
        Console.WriteLine(name);
    }
}
输出结果为:
Zhenglanzhen

posted @ 2008-04-22 20:58  风轻如梦  阅读(334)  评论(0编辑  收藏  举报