C# XML讀取教學(額外用到Stringbuilder)

實務上會碰到一些XML資料的讀取 ,

有些是XML檔案(一個檔案,內文結構是XML)

有些是存入DB的XML格式資料(一筆存入DB的資料,內容結構是XML)

以下僅分享讀取XML資料的部分做介紹

語法重點:

*SelectSingleNode

*SelectNodes


 

==================================================

XML範例:

<英雄聯盟>

    <人物>提摩</人物>

    <種族>約德爾人</種族>

    <特徵>

        <聲音>操拎呆</聲音>

        <台詞>Captain Teemo on duty</台詞>

    </特徵>

    <特徵>

        <聲音>笑起來很G掰</聲音>

        <台詞>Hut two three four!Hut two three four!</台詞>

    </特徵>

</英雄聯盟>

==================================================

Model部分(示範用,不重要)

public string 人物{get;set;}

public string 種族{get;set;}

public string 聲音{get;set;}

public string 台詞{get;set;}

================================================== 

C#部分

XmlDocument doc = new XmlDocument();
doc.LoadXml(英雄聯盟.Content); //讀取XML資料,視資料來源進行調整,不贅述
XmlNode root = doc.DocumentElement; //XmlNode 表示XML文件中的單一節點

Model.人物 = root.SelectSingleNode("英雄聯盟/人物").InnerXml; //取得 提摩

Model.種族 = root.SelectSingleNode("英雄聯盟/種族").InnerXml; //取得 約德爾人

 

//注意,由於 特徵的結構為一個英雄有多個特徵,因此這邊使用root.SelectNodes取得 該英雄下的所有特徵

XmlNodeList featureList= root.SelectNodes("英雄聯盟/特徵"); //featureList會取得兩筆 特徵 裡面包含 聲音,跟台詞

 

這邊先打個岔,我的最終目標為  聲音字串要等於 "操拎呆"+ " " + "笑起來很G掰"

                                                    台詞字串要等於"Captain Teemo on duty And" + " " + "Hut two three four!Hut two three four!"

在C#中,如果要用字串相加,不要 string A = string.Empty ;   string B = string.Empty ; string C = A+B;

請使用Stringbuilder,這個會有效能上的問題,我也不是很專精。

StringBuilder laughString = new StringBuilder(); //笑聲 字串

StringBuilder linesString = new StringBuilder();//台詞 字串

 

 

回到featureList的部分,由於我們取得的featureList,裡面會包含兩筆 特徵 ,而特徵下又包含聲音,跟台詞 所以用foreach來讀取

//XmlNodeList featureList= root.SelectNodes("英雄聯盟/特徵");

foreach(var eachFeature in featureList)

{

    Model.聲音  = laughString.Append(eachFeature.SelectSingleNode("聲音").InnerXml + '  '));  //.Append為Stringbuilder字串相加語法

    Model.台詞  = linesString .Append(eachFeature.SelectSingleNode("台詞").InnerXml+ '  '); 

}

 

如內容有誤,或其他可討論的,還請不吝指教。