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:IcosResBatch" + 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