工作中常會傳遞資訊,或者建立一個.ini檔案讓使用者設定初始資訊,
目前最常用的格式就是XML,這邊記錄一下如何透過C#建立XML的資料格式。
假設我們想要產生如下圖這樣格式的資料:
首先必須先 using System.Xml;
然後建立出 XmlDocument物件。
建立 Declaration
看你想不想在第一行建立 <?xml version="1.0" encoding="UTF-8"?>
想建立的話可以宣告 XmlDeclaration 物件,並加到doc中,程式碼如下:
建立 根結點
"特別要注意的是,根結點只有一個。"那誰是根結點呢?方框中的 AOI_Information 就是根結點。
方框中的建立步驟為,
先透過XmlDocument物件去建立 XmlElement 物件,把需要的資訊加入之後,
再加到 XmlDocument物件中,程式碼如下:
逐行對照
第一行程式碼產生了 XmlElement 物件,名叫 "AOI_Information",如下圖所示:
第二行程式碼,在這個 XmlElement 物件之中產生了 Attrubute ,
名稱是 Client ,內容是 "Martin" ,如下圖:
第三行程式碼,繼續在 XmlElement 物件之中產生了 Attrubute ,
名稱是 type ,內容是 "Plane Measurement",如下圖:
完成了 XmlElement 物件的所有設定之後,
透過第四行程式碼中的 doc.AppendChild(),
將這個 XmlElement 物件加到 XmlDocument 物件中。
值得注意的是,這個 doc.AppendChild(),只能使用一次,因為"根結點"只有一個,
後續新增的Element都必須透過 doc.DocumentElement.AppendChild() 進行結合,待會會示範。
新增其他結點
根結點內的其他三個 XmlElement 又該如何建立呢?
很簡單,同樣是先建立 XmlElement 物件,把資訊都填上之後,
再透過 doc.DocumentElement.AppendChild() 進行結合即可,
但這邊刻意加了三個 XmlElement 物件是有用意的,
Robot 這個結點是透過 Attribute 進行資訊的設定,
Robot_Arm 這個結點是透過 InnerText 進行資訊的設定,
Robot_Information 這個結點則是使用了上述兩種方式進行資訊設定,
個別的結果與程式碼對照如下:
Robot - 使用 Attribute
Robot_Arm - 使用 InnerText
Robot_Position - 使用 Attribute 與 InnerText
使用Attribute或InnerText去紀錄資訊並沒有對或錯,端看團隊溝通習慣就好。
巢狀結點
如果想再某個 XmlElement 物件底下再展開其他 XmlElement 物件呢?
沒問題,一樣是透過 document 物件去建立 XmlElement 物件,資訊建立完成之後,
直接對你想要加入的 XmlElement 物件去執行 .AppendChild() 即可。
示範如下:
在既有的 Robot_Position 物件底下再建立一個 Robot_PathType 物件。
會發現新加入的 Robot_PathType 物件會和 InnerText 並列在一起。
到這邊你就能建立一份完整的 XmlDocument 了,
透過以下程式碼,你也能將這份 XmlDocument 轉成 String格式的資料。
其實建立 Xml 格式的資料還可以透過 序列化 進行建立,改天有空在來嘗試看看。
而既然有了 Xml 格式的資料,接收的一方就必須要從中取得資訊,
那麼讀取 Xml 格式的部分,在透過下一篇文章進行說明好了。
沒有留言:
張貼留言