首先准備一個簡單但是常見的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遍歷。