嗯…
C# 對 XML 的操作方式挺多樣的,實在不知道從何筆記
先從比較萬能的 XmlDocument 下手吧!
在使用 Xml 之前,一定要對他有所了解
我主要是看兩隻老虎提供的免費電子書學習的
下載「無廢話 XML」eBook
其實,大約去年12月左右就有找到這本eBook
可能功力不足,看得懵懵懂懂的,只看了一兩章就放棄了
(雖然現在還是不太夠XD)
因為要利用 xml 與用C++開發引擎的程式溝通,再一次翻出來看
嗯~現在看起來比較順暢了!
不過 HMTL 後面和 XSL 的部分還是消化不太了
我對 WEB 實在沒啥經驗
希望看倌對 xml 至少有一定的認識在看會比較好,不然應該會被我誤導XD
廢話完畢…進入正題
由於目前用途還不致於有名稱衝突的問題,為求簡潔,暫且不套用「命名空間(Namespace)」
(在書中稱之為「名稱空間」,我是習慣叫它命名空間)
<?xml version="1.0" encoding="UTF-16"?> <遊戲店> <軟體區> <軟體 name="幻想三國誌 4 外傳 精裝典藏版" price="1210" /> <軟體 name="Photo Shop CS3 10.0 中文商業版" price="28900" /> <軟體 name="瑪俐歐賽車 DS (NDS,日版)" price="1200" /> </軟體區> <硬體區> |
這是一個簡單的 xml 檔案內容
首先,先來創造一個最單純的 xml 空檔
// 產生一個 XmlDocument XmlDocument XDoc = new XmlDocument(); // 產生一個 XML宣告(Declaration) // 將這個 XML宣告 加入整個檔案最前面 // 產生一個名為 遊戲店 的元素 // 將之附加到檔案底下 // 儲存 |
其中, DocumentElement 是指整個 xml 的根結點(root)
因為宣告(Declaration)一定放在檔最前面,故找出根節點,將之插入其前面
至於到底要不要加入宣告沒有硬性規定,通常還是標清楚比較安全
嗯~其他都如同字面上的意思!
如果沒錯誤,那麼輸出的 xml 內容應該像是…
<?xml version="1.0" encoding="UTF-16"?> <遊戲店 /> |
這檔案的根結點就是 <遊戲店> 了!
接著加入一些基本元素
至於寫法,主要分兩種…
<軟體 name="幻想三國誌 4 外傳 精裝典藏版" price="1210" /> |
把物件屬性寫在「節點屬性」上,雖然看起來比較雜,但用 XmlDecument 會比較簡單
<硬體> <名稱>微星 9600GT 512M DDR3 公版卡</名稱> <類型>顯示卡</類型> <價格>4700</價格> </硬體> |
將物件屬性利用子節點的方式,附加在物件節點上
直接看起來這個比前者容易懂,但用 XmlDecument 相對較麻煩XD
事實上我還在這兩者中間掙扎
反正最後應該是會混搭!混在一起就對了!
我們先規畫三個區域,分別為軟體區、硬體區和周邊區
將它們放到 <遊戲店> 底下
// 紀錄根節點的位置 XmlNode XRoot = XDoc.SelectSingleNode("遊戲店"); // 新增三個遊戲軟體的節點 // 附加上去 |
XmlNode SelectSingleNode( string xpath )
回傳第一個符合 XPath 參數的子節點。
如果這時候輸出的話,應該是像這樣…
<?xml version="1.0" encoding="UTF-16"?> <遊戲店> <軟體區 /> <硬體區 /> <周邊區 /> </遊戲店> |
分別使用上述兩種方式加入物件
// 為 軟體區 增加一些遊戲 // 取得 軟體區 的節點 XmlNode XSub1Node = XRoot.SelectSingleNode("軟體區"); // 產生遊戲 // 第一種加入節點屬性的方法 // 設 // 附加上去 // 第二種加入節點屬性的方法 // 將這個 遊戲 附加給 軟體區 |
// 產生 硬體 給硬體區 XmlNode XSub2Node = XRoot.SelectSingleNode("硬體區"); XmlElement XSub2Sub = XDoc.CreateElement("硬體"); // 產生名稱節點 XmlElement XSub2SubName = XDoc.CreateElement("名稱"); // 填上內容 // 加入屬性 |
這時候輸出的話,應該是像這樣…
<?xml version="1.0" encoding="UTF-16"?> <遊戲店> <軟體區> <軟體 name="幻想三國誌 4 外傳 精裝典藏版" price="1210" /> </軟體區> <硬體區> <周邊區 /> |
利用上面的程序,再多加幾個項目進去吧!
接著用一個簡單的方式來用程式檢閱剛才的成果
先在 Form 裡面拉出一個 DataGridView 控制項
接著…
DataSet ds = new DataSet(); ds.ReadXml(@"Test_CreateSubNode.xml"); this.dataGridView1.DataSource = ds.Tables["軟體"]; |
這樣表單上就會列出所有符合節點名稱為 <軟體> 的項目了!
就先這樣吧
剩下改天再繼續~
總覺得好像打得太複雜了