接續上一篇 C# 建立 XMLDocument ,
來看看要如何讀取。
以巢狀的資料來讀取,如下圖:讀取的部分,主要是以直接指定的方式進行特定資料的讀取,
因為我們已經明確知道資料配置,
通常實務上也會和合作的夥伴制定好這份格式,這樣才好進行資料蒐集。
當然也可以透過XmlReader進行輪詢,慢慢把全部資料都抓出來,或查出特定資料位置後再抓。
把檔案讀進來
透過Load,把檔案路徑給他就能夠讀進來了。
Decelaration讀取
雖然目前我還沒使用到第一行的資訊,但他跟其他Element不同,也記錄一下如何讀取吧。
由於 XmlDeclaration 的資訊一定是在第一行(如果有這條資訊的話),
所以取出第一個Child Node便是 XmlDeclaration 。
這邊要注意的是,第一行資訊是XmlDeclaration型別,
因此取出Node時需轉回XmlDeclaration才能取得我們要的屬性(例如version與encoding)。
監看式觀察結果:
讀取根結點
來看程式碼:
這邊直接指名要選擇的Node名稱,根結點名稱為 "AOI_Information",
取出來之後一樣要轉型成 XmlElement ,才能夠讀取內部資訊,
接著就能透過 GetAttribute() 擷取特定目標的value。
監看式觀察結果:
其他節點
這次跳過Robot_Arm,直接讀取Robot_Position看看,不照順序讀取是否可以正常取出value。
這次除了讀取Attribute,也讀取InnerText,來看程式碼:
特別注意的是,Robot_Position這個Node是在AOI_Information底下,
所以必須寫成 AOI_Information / Robot_Position,這樣代表巢狀第一層,
一樣記得轉型成 XmlElement ,便可透過 GetAttribute() 與 InnerText 取出value。
監看式觀察結果:
沒有問題,只要知道想讀取的標的,就能夠取出想要的值,不一定要按照順序讀取。第二層巢狀
第二層巢狀該怎麼取值?只需要完整列出路徑即可。
例如想取出 Robot_Position 底下的 Robot_PathType。
來看程式碼:
可以發現,指定好路徑 AOI_Information/Robot_Position/Robot_PathType,
照著之前的做法取出 Node 並轉為 XmlElement ,
即可取出 value。
以上的方法是以絕對路徑的方式取出 value,對於已知的特定資訊取出非常方便。
如果需要大量取出data的情況可能不適合,可以透過XmlReader去取會比較省力。
沒有留言:
張貼留言