C#讀取XML檔案內容資訊

XML檔案是個相當常用的檔案,像小編公司自動化的生產設備很多都有使用XML來呈現良率,但是因為XML檔案有階層關係,再使用C#來讀取XML也沒有像讀取txt檔案那樣簡單,小編同事們通常在讀取XML檔案通常都是使用【Linq to XML】的方式,但是對Linq不熟的人可能會卡關一陣子,因此這邊小編要來分享另外一種較簡單使用 C#讀取XML檔案內容資訊 的方式,大家可以再來參考看看哪一種方式是較適合您的。

 

C#讀取XML檔案內容資訊教學 

首先由下面連結查詢想要取得的資料在哪一個XML的階層中

XML閱讀器(網路版) : 

閱讀器連結請點我

 

由下圖閱讀器所產生的階層圖,可以很清楚的查看到階層排序是依照 < YieldList  →  Yield  →  Header  &  YieldData >

 

EX: 當如果我們想要獲取的資訊是產品PASS的數量為738個。
1. 首先先下載DataStream.Dll檔案,並加入到C#專案中。

DataStream.Dll

下載連結請點

 

解開壓縮檔後,依照使用的.NET版本,載入DataStream.dll檔案。
2. C#XML讀取程式範例

string schedule_numbber = SchedularNo;
/* 參數為XML的檔案路徑與階層 */
DataStreams.Xml.XmlRecordReader Total_Status_read = new DataStreams.Xml.XmlRecordReader(@"C:\Icos\Res\Batch\" + schedule_numbber + "\\" + schedule_numbber + "_global.xml", "ICOS/GlobalReport/YieldSection/YieldList/Yield/YieldData");
/* 獲取 InitialTotlal 與 Pass 欄位的資料 */
Total_Status_read.Columns.Add("InitialTotal","initial_total");
Total_Status_read.Columns.Add("Pass","pass");
/* 因有相同階層,因此會有多筆資料被讀出 藉由使用IF 與 Index 判斷要讀取的資料 */
/* 本篇範例因為要獲取第一筆資料因此 if (index == 0) 時會獲取第一筆資料 */
int index = 0;
while (Total_Status_read.ReadRecord())
{
    /* Get Global Data */
    if (index == 0)
    {
        LoaderCount = Int32.Parse(Total_Status_read["initial_total"]);
        TotalOutput = Int32.Parse(Total_Status_read["initial_total"]);
        Auto1OutputCount = Int32.Parse(Total_Status_read["pass"]);
    }
    index ++;
}

參考相關網站CSVREADER.Com