XML設計用來傳送及攜帶資料資訊,不用來表現或展示資料,HTML語言則用來表現資料,所以XML用途的焦點是它說明資料是什麼,以及攜帶資料資訊。
1.豐富檔案(Rich Documents)- 自定檔案描述並使其更豐富
*屬於檔案為主的XML技術應用
*標記是用來定義一份資料應該如何呈現
2.後設資料(Metadata)- 描述其它檔案或網路資訊
*屬於資料為主的XML技術應用
*標記是用來說明一份資料的意義
3.設定檔案(Configuration Files)- 描述軟體設定的參數
XML的格式很多樣!!今天介紹比較常見的兩種
第一種:
<YC>假設有一個這樣子的XML檔案,我們要如何讀取他呢?
<Class test="A" Name="B"/>
<Class test="C" Name="D"/>
</YC>
其實不困難,.net 2.0中有提供一個xmlreader的功能!!
可以用來讀取XML的資料
public void LoadXML() { XmlReaderSettings setting = new XmlReaderSettings();//XML讀取設定 setting.IgnoreComments = true; setting.IgnoreWhitespace = true; setting.ValidationType = ValidationType.None; try { XmlReader reader = XmlTextReader.Create("YC.xml", setting); while (reader.Read()) if (reader.NodeType == XmlNodeType.Element) if (reader.LocalName.Equals("Class")) { reader["test"];//讀取test的值 reader["Name"];//讀取Name的值 } } catch (Exception xmlex){} }
第二種:
<YC>
<Class>
<test>A</test>
<Name>B</Name>
</Class>
<Class>
<test>C</test>
<Name>D</Name>
</Class>
</YC>
假設有一個這種階層式的XML,也是可以透過xmlreader來讀取他!!
public void LoadXML(string xml) { XmlReaderSettings setting = new XmlReaderSettings(); setting.IgnoreComments = true; setting.IgnoreWhitespace = true; setting.ValidationType = ValidationType.None; try { Stream s = new MemoryStream(UTF8Encoding.UTF8.GetBytes(xml));//把字串的xml轉成stream XmlReader reader = XmlTextReader.Create(s, setting); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element&&reader.NodeType!=XmlNodeType.EndElement)//偵測標籤為<item>的格式 { if (reader.LocalName.Equals("Class")) { while (reader.Read()) { if (reader.LocalName.Equals("Class")) break; if (reader.NodeType == XmlNodeType.Element) switch (reader.LocalName) { case "test": reader.ReadString();//取得test的值 break; case "Name": reader.ReadString();//取得Name的值 break; } reader.MoveToNextAttribute();//把讀寫頭移到下一個標籤 } } } } } catch (XmlException xmlex) { } }
這個code使用的是抓取到xml的字串,再將字串轉成stream,再放入xmlreader裡!!
P.S.如果是使用中文字的話,建議是把編碼改成utf-8,比較不易出錯!!
上述兩種不同的XML格式,在讀取時也有一點點小小的差異。不過方法大同小異!!
由於XML的格式甚多,而且每個case都有小小的不同,在讀取時要稍作調整!
上述若有寫錯或寫得不好還請提出修正^^
2010/07/23 By YC
參考出處:
1.Wiki XML
2.最簡單 xml 格式文字檔 (讀寫範例)
3.從檔案讀取 XML (Visual C#)
我想寫程式可以找您MSN詳談嗎?
回覆刪除kissshout@hotmail.com