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 | 寫出包含指定文本的 <![cdata[...]]> 塊 |
writecomment | 寫出包含指定文本的注釋 <!--...--> |
writewhitespace | 寫出給定的空白 |
writeprocessinginstruction | 寫出在名稱和文本之間帶有空格的處理指令,如下所示:<?name text?> |
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文件,文件的內容為:
<items>
<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類也十分的容易使用。
新聞熱點
疑難解答
圖片精選