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