從 XmlReader 載入 XElement,並選擇性地保留泛空白字元、設定基底 URI,以及保留行資訊。
public static XElement Load(
XmlReader reader,
LoadOptions options
)
用XElement建立XML樹狀結構,下面用二種簡單的方式。
XElement xmlTree1 = new XElement(
"Root",
new XElement("Child1", 1),
new XElement("Child2", 2),
new XElement("Child3", 3),
new XElement("Child4", 4),
new XElement("Child5", 5),
new XElement("Child6", 6)
);
XElement xmlTree2 = new XElement(
"Root",
from el in xmlTree1.Elements()
where ((int)el >= 3 && (int)el <= 5)
select el
);
Console.WriteLine(xmlTree2);
第一個例子從一個網站加載一個網站地圖的XML文件。一個網站地圖包含所有頁面和(某些情況下)的圖像列表。該XElement的類型可以訪問遠程文件。在這個例子中,我們使用了本網站的站點地圖。
XName的:
創建了兩個XName的對象。
這些店無論是命名空間和本地Elements名稱。
要注意的是,對於一個自定義命名空間的XML文件,要使用的XNames物件取代字串來查找在XElement對象的Elements。最好用的XName參數中的Elements()方法。這將返回在站點地圖的所有URL的元素。然後在每個url元素,我們指向Elements的值。使用一個單獨的XName為LC Elements。
使用C# XElement.Load在地圖上
class Program
{
static void Main()
{
//下載sitemap的XML範本
XElement sitemap = XElement.Load("http://www.dotnetperls.com/sitemap.xml");
// 取得XNames.
XName url = XName.Get("url", "http://www.sitemaps.org/schemas/sitemap/0.9");
XName loc = XName.Get("loc", "http://www.sitemaps.org/schemas/sitemap/0.9");
// 檢查 url Elements,然後存取每個Elements
foreach (var urlElement in sitemap.Elements(url))
{
var locElement = urlElement.Element(loc);
Console.WriteLine(locElement.Value);
}
// 排列
Console.WriteLine("Count: {0}", sitemap.Elements(url).Count());
}
}
以下是地圖的XML範例結構
<?xml version="1.0"?>
<urlset>
<url>
<loc>http://www.dotnetperls.com/xor</loc>
<image:image>
<image:loc>http://www.dotnetperls.com/xor.png</image:loc>
</image:image>
</url>
<url>
<loc>http://www.dotnetperls.com/yield</loc>
<image:image>
<image:loc>http://www.dotnetperls.com/yield.png</image:loc>
</image:image>
</url>
<url>
<loc>http://www.dotnetperls.com/zip</loc>
</url>
</urlset>
可以看到地圖xml中包含1247網址的Elements。要忽略圖像標記的sitemap.xml的範圍內。這些不是由程式範例讀取。XElement.Load成功地從地圖xml讀取出來。
要注意的地方是,如果你運行這個程序,輸出取決於sitemap文件的當前狀態。如果XML文件被移動或存取不到時,程序會出錯。另外,程序調用Count()擴展方法來計算所有Elements()。這是需要在一個IEnumerable。
-雲遊山水為知已逍遙一生而忘齡- 電腦神手
沒有留言:
張貼留言