将一個已知的XML放到XDocument 對象當中使用LINQ 查詢非常的容易,下面是一個例子。
查找XML文檔中的所有PERSONA元素顯示結果個數,并周遊輸出其值
public void MyDescendants()
{
XDocument xdoc = XDocument.Load(Server.MapPath("hamlet.xml"));
//查找元素名為PERSONA 的元素
var query = from people in xdoc.Descendants("PERSONA")
select people.Value;
//people 是符合條件元素結果集 而people.Value;就是這個結果集的所有元素的值的序列
Response.Write(query.Count() + " 個玩家被找到。");
Response.Write("<p />他們是: <p />");
foreach (var item in query)
{
//輸出他們的值
Response.Write( item + "<br />");
}
}
通過URL 找到一個網絡上的RSS XML文檔,并查詢。
public void MyRSS()
{
//通過下面的代碼你可以看到一個簡單的網頁RSS閱讀器
XDocument xdoc = XDocument.Load(@"http://www.cnblogs.com/TerryFeng/rss");
//找到channel元素集合
var query = from rssFeed in xdoc.Descendants("channel")
select new
{
Title = rssFeed.Element("title").Value,//擷取其下的title元素的值組成新結果集匿名對象的屬性
Description = rssFeed.Element("description").Value,//擷取其下的description元素的值組成新結果集匿名對象的屬性
Link = rssFeed.Element("link").Value,//擷取其下的link元素的值組成新結果集匿名對象的屬性
};
foreach (var item in query)
{
Response.Write("部落格: " + item.Title + "<br />");
Response.Write("描述: " + item.Description + "<br />");
Response.Write("位址: " + item.Link + "<br /><p />");
}
//第二個查詢,查詢文檔中的item元素,每個項目就是一個部落格随筆
var queryPosts = from myPosts in xdoc.Descendants("item")
select new
{
Title = myPosts.Element("title").Value,
Published = DateTime.Parse( myPosts.Element("pubDate").Value),
Description = myPosts.Element("description").Value,
Url = myPosts.Element("link").Value,
Comments = myPosts.Element("comments").Value,
};
foreach (var item in queryPosts)
Response.Write("标題: " + item.Title + "<br />");
Response.Write("釋出日期: " + item.Published + "<br />");
Response.Write("連結: " + item.Url + "<br />");
Response.Write("内容: " + item.Description + "<br />");
Response.Write("注釋: " + item.Comments + "<br /><p />");
Console.ReadLine();
}