Linq To Xml上手(1) Descendants、Elements遍历节点

C#3.0
Vs2008 RTM

本文介绍如何使用 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>

测试一:
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遍历。
posted on 2007-12-05 10:40  Tristan(GuoZhijian)  阅读(1301)  评论(0编辑  收藏  举报