asp.net Linq To Xml上手Descendants、Elements遍历节点

  首先准备一个简单但是常见的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>

  测试一:

  

复制代码 代码如下:

  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

  注意:

  Descendants 可遍历某节点或文档下的所有子节点

  Elements 则是遍历当前节点或文档下一级的子节点 (这点区别非常重要)

  非常简单的两个 class 已基本上满足普通的XML遍历。