2013年12月15日 星期日

C# XElement.Load - Part 2 靜態方法

我們來看看如何可以與XElement的XML文檔使用靜態Load方法。XElement和XDocument類型讓XML容易使用。載入XML文檔到內存中你只需要一行程式碼。
您可以使用XElement裡的方法(Method),像是Element() 和Elements()來存取XML的元素。

public sealed class SiteStructure
{
    static readonly SiteStructure _instance = new SiteStructure();
    public static SiteStructure Instance
    {
        get { return _instance; }
    }

    XElement _x;

    private SiteStructure()
    {
        string mapLoc = HttpContext.Current.Request.MapPath("~/App_Data/Map1.xml");
        _x = XElement.Load(mapLoc);
    }

}


MapPath從虛擬路徑轉換為一個真正的服務器路徑。意思是可以很容易地通過其名稱打開一個XML文件,讓XElement.Load讀取數據。這是一個靜態方法,它允許你將XML加載到內存中。在這一點上,整個XML文件現在被解析和駐留在內存中。文件系統或網絡的存取不是必要的。
App_Data文件夾是資料庫文件或XML文件中的特殊ASP.NET文件夾。你可以有一個XML文件中的App_Data文件夾。檢視App_Code文件夾,然後新增一個新的C#類別。你可以讓類別獨立。

假設被裝載的XElement的XML,使用的是如同資料庫中的XML,但完全是在內存中。查詢是本機。下面範例是查詢表達式是如何使用。

public void Main()
{
    // 取得配對出指定的標題頁。
    string t = "title";
    var v = from page in _x.Elements("SitePage")

            where t == page.Element("Title").Value

            select page;


    // 得到第一頁的類別配對。
    string c = v.First().Element("Category").Value;

    // 計數與該類別元素值元素的數量。
    int count = (from p in _x.Elements("SitePage")

                 where p.Element("Category").Value == c &&

                 p.Element("Visibility").Value == "Regular"

                 select p).Count();


}

這是本文使用的XML。可以對配上面的程式碼表示使用標記和屬性名稱中使用的字串。表示這部分是完全應用程式特定的XML將有所不同。
可以使用一些本文中的程式碼範例,了解是如何處理的XML。

<?xml version="1.0"?>

<ArrayOfSitePage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <SitePage>

    <Visibility>Supplementary</Visibility>

    <Title>C# .NET Examples and Resources</Title>

    <Url></Url>

    <Category>None</Category>

  </SitePage>

  <SitePage>

    <Visibility>Supplementary</Visibility>

    <Title>Usability Guidelines for Web Writing</Title>

    <Url>Content/Usability-Writing.aspx</Url>

    <Category>None</Category>

  </SitePage>

  <SitePage>

    <Visibility>Regular</Visibility>

    <Title>Alphanumeric Sorting in C#</Title>

    <Url>Content/Alphanumeric-Sorting.aspx</Url>

    <Category>Algorithms</Category>

  </SitePage>

  <SitePage>

    <Visibility>Regular</Visibility>

    <Title>Word Count Algorithm in C#</Title>

    <Url>Content/Word-Count-Algorithm.aspx</Url>

    <Category>Algorithms</Category>

  </SitePage>


</ArrayOfSitePage>

筆者使用XElement和它的Load方法可以快速輕鬆地加載XML。加載你的XML文件中的單個語句,然後執行查詢它來生成輸出。改進可存儲更多的詳細數據,或在運行時修改。

-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言