xml是一項熱門的技術。它之所以能夠引起人們的興趣,一個主要的原因在於它十分的簡單,人們可以很容易地理解和使用它。每個程式設計師都能輕易看懂一個XML文件,理解它所包含的內容。
.NET包含了許多支援XML的類,這些類別使得程式設計師使用XML程式設計就如同理解XML檔案一樣簡單。在這篇文章中,我將給出這樣的一個類別的使用範例,這個類別就是XmlTextWriter類別。
XmlTextWriter類別允許你將XML寫到一個檔案中去。這個類別包含了很多方法和屬性,使用這些屬性和方法可以讓你更容易處理XML。為了使用這個類,你必須先建立一個新的XmlTextWriter對象,然後你可以將XML片段加入這個物件中。這個類別中包含了不少的方法用於將各種類型的XML元素添加到XML檔案中,下表給出了這些方法的名字和描述情況:
方法
描述
WriteStartDocument
書寫版本為「1.0」的XML 宣告
WriteEndDocument
關閉任何開啟的元素或屬性
Close
關閉串流
WriteDocType
寫出具有指定名稱和可選屬性的DOCTYPE 聲明
WriteStartElement
寫出指定的開始標記
WriteEndElement
關閉一個元素
WriteFullEndElement
關閉一個元素,並且總是寫入完整的結束標記
WriteElementString
寫出包含字串值的元素
#WriteStartAttribute
書寫屬性的起始內容
WriteEndAttribute
關閉上一個WriteStartAttribute 呼叫
WriteRaw
手動書寫原始標記
WriteString
書寫一個字串
WriteAttributeString
出具有指定值的屬性
WriteCData
寫出包含指定文字的 區塊
WriteComment
寫出包含指定文字的註解
WriteWhiteSpace
寫出給定的空白
WritePRocessingInstruction
寫出在名稱和文字之間帶有空格的處理指令,如下所示:
如果你對於XML十分熟悉,那麼你一定能很好的理解上面的這些方法。下面我們將給出一個例子,在這個例子中,我們將先建立一個文檔,加入一些元素,然後關閉這個文檔。新增了元素後你還可以加入子元素,屬性和其他內容。下面的程式碼就是這樣的一個例子,它建立了一個檔案名為title的XML檔案。
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlTextWriter writer = new XmlTextWriter("titles.xml", null); //写入根元素 writer.WriteStartElement("items"); //加入子元素 writer.WriteElementString("title", "Unreal Tournament 2003"); writer.WriteElementString("title", "C&C: Renegade"); writer.WriteElementString("title", "Dr. Seuss's ABC"); //关闭根元素,并书写结束标签 writer.WriteEndElement(); //将XML写入文件并且关闭XmlTextWriter writer.Close(); } }
如果你編譯並且執行上面的程式碼,你將創建這個XML文件,文件中包含如下內容:
<items> <title>Unreal Tournament 2003</title> <title>C&C: Renegade</title> <title>Dr. Seuss's ABC</title> </items>
上面的程式碼創建了一個名為writer的XmlTextWriter對象。當這個物件被建立時,它被關聯到一個名為titles.xml的檔案。接著,程式建立了一個叫做items的根屬性,WriteStartElement方法建立了這個屬性的開始標籤。接下來,程式呼叫了WriteElementString方法建立了三個子元素。從上面的程式碼你也可以看到,這個方法使用第一個參數(在上面的程式中是title)作為元素的標籤;使用第二個參數作為元素的值。當你加入了所有的元素後,你需要關閉根元素。這時你可以呼叫WriteEndElement方法來關閉那個最近被開啟的元素;在這個例子中,這個最近被開啟的元素就是根元素。當所有的資料都已經寫好,根元素也已經關閉時,你可以將訊息傳送給你的XmlTextWriter。這意味著這時候你可以呼叫Close方法關閉它了。
上面的程式碼相對十分的簡單,下面我們來看一個使用了XmlTextWriter類別中更多方法,功能更加完善的範例。
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlTextWriter writer = new XmlTextWriter("myMedia.xml", null); //使用自动缩进便于阅读 writer.Formatting = Formatting.Indented; //书写根元素 writer.WriteStartElement("items"); //开始一个元素 writer.WriteStartElement("item"); //向先前创建的元素中添加一个属性 writer.WriteAttributeString("rating", "R"); //添加子元素 writer.WriteElementString("title", "The Matrix"); writer.WriteElementString("format", "DVD"); //关闭item元素 writer.WriteEndElement(); // 关闭元素 //在节点间添加一些空格 writer.WriteWhitespace("\n"); //使用原始字符串书写第二个元素 writer.WriteRaw("<item>" + "<title>BloodWake</title>" + "<format>XBox</format>" + "</item>"); //使用格式化的字符串书写第三个元素 writer.WriteRaw("\n <item>\n" + " <title>Unreal Tournament 2003</title>\n" + " <format>CD</format>\n" + " </item>\n"); // 关闭根元素 writer.WriteFullEndElement(); //将XML写入文件并关闭writer writer.Close(); } }
上面程式碼編譯執行後將會得到myMedia.xml文件,檔案的內容為:
<item rating="R"> <title>The Matrix</title> <format>DVD</format> </item> <item> <title>BloodWake</title> <format>XBox</format> </item> <item> <title>Unreal Tournament 2003</title> <format>CD</format> </item> </items>
上面程式碼中的註解說明了這個程式的功能是如何實現的。需要記住的一件事是:當呼叫方法開始一個操作時,你需要在程式的合適的地方呼叫方法結束這個操作。例如,你呼叫了StartElement,你就必須呼叫EndElement來關閉元素;當然在這兩個呼叫之間你也可以加入一個子元素。無論你何時呼叫EndElement方法,它總是關閉最近使用StartElement方法開啟的那個元素(這和堆疊的工作方式很相似)。
使用XmlTextWriter十分的容易,不過我還是建議你自己動手試試這些程式碼和方法。你試過以後會發現這些程式碼能夠輕易地整合到你的程式中。你也應該記住,XmlTextWriter只是.NET提供的眾多XML類別中的一個。和XmlTextWriter一樣,其他的XML類別也十分的容易使用
以上就是.NET中書寫XML的一種簡單方法的內容,更多相關內容請關注PHP中文網(www.php.cn)!