引言
隨著xml的普及以及在動態web應用程式中大量應用,如何通過.net建立,刪除,修改xml檔案變的也來也重要了。乙個簡單的概念是,xml檔案跟大的文字檔案並沒有什麼區別,同時它是先於.net出現,很多asp的開發者,當他需要程式輸出xml檔案的時候,通常都是用response.write()方法輸出為xml文件。
使用response.write()的方式來輸出xml文件,並不是一種那麼好的方法,首先,我們用這種方法輸出字元以組成xml檔案的時候,我們會很擔心輸出的這些字元是不是符合xml規範,不符合xml規範的xml文件將不能得到真確完整的顯示,如:<,>,&"",和'這些符號,當它們在xml檔案裡的出現的時候,我們必須手工查詢這些不合規範的字元;再次,當我們需要輸出的是乙個包含很多名字空間,屬性和元素的xml檔案的時候,使用response.write()方法所必須的**將會變得冗長以及可讀性差。
幸運的是,.net framework提供了乙個特別為建立xml檔案使用的類-system.xml.xmltextwriter,使用這個類來建立xml檔案,你並不需要擔心輸出是否符合xml規範的問題,同時**將會變得非常簡潔。在這篇文章中,我們將深入的講述如何使用xmltextwriter類來建立xml檔案。
關於xml的說明
xmltextwriter物件簡介:
xmltextwriter物件包含了很多可用於在建立xml檔案時新增元素和屬性到xml檔案裡的方法,比較重要的有:
writestartdocument()-建立xml檔案首先就需要用到這個方法,它是在建立xml檔案的第一行**,用來指定該檔案是xml檔案以及設定它的編碼型別;
writestartelement(string)-這個方法的作用是在xml檔案中建立新元素,你可以通過string引數設定元素的名稱(當然了,你還可以使用optional關鍵字指定乙個可選的引數);
writeelementstring(name, text_value)-如果你需要建立乙個除了字元,什麼也沒有的(如不巢狀元素)的元素,你可以使用該方法;
writeendelement()-對應writestartelement(string)方法,作為乙個元素的結尾;
writeenddocument()-xml檔案建立完成後使用該方法結束;
close()-關閉所有的文字流,把建立的xml檔案輸出到指定位置。
使用xmltextwriter物件建立xml檔案,需要在類構造器中指定檔案的型別,而且編碼型別必須是system.text.encoding,如:system.text.encoding.ascii, system.text.encoding.unicode及system.text.encoding.utf8,在xmltextwriter類構造器指定為何種型別,在輸出xml檔案將以那種流檔案形式輸出。
使用xmltextwriter物件建立乙個簡單的xml檔案
<userinfo>
<browserinfo>
<urlreferrer>url referrer info</urlreferrer>
<useragent>user agent referrer info</useragent>
<userlanguages>languages info</userlanguages>
</browserinfo>
<visitinfo timevisited="date/time the page was visited">
<ip>visitor's ip address</ip>
<rawurl>raw url requested</rawurl>
</visitinfo>
</userinfo>
選用這個有這種結構的xml檔案為輸出物件,是為了可以在這裡使用所有先前講過的方法,方便闡述。
如下便是建立該xml檔案所需的asp.net**:
首先我們要注意是否有匯入system.xml and system.text命名空間,然後我們在page_load事件中建立乙個xmltextwriter物件例項,並且指定建立的xml檔案儲存為userinfo.xml檔案和它的編碼型別為utf8(a translation of 16-bit unicode encoding into 8-bits),然後使用writestartelement(elementname)方法來建立巢狀了其他元素的元素,並以writeendelement()作為結束,此外,我們使用writeelementstring(elementname, textvalue)方法來建立最底層即沒有巢狀其他元素的元素。
在瀏覽器視窗中輸出xml檔案
先前的例子示範了如何使用xmltextwriter物件建立xml檔案以及把它儲存為乙個檔案,這個檔案可能是你所需要的,但是有時候,我們需要把建立的xml檔案在瀏覽器上顯示出來,這個時候,我們可以使用上例**建立userinfo.xml檔案,然後開啟它,再使用response.write()把它輸出,但是這種方法並不是很好。
下面列出了上例修改後的部分**,修改過的**將一些粗體顯示:
<@ page contenttype="text/xml" %>
<%@ import namespace="system.xml" %>
<%@ import namespace="system.text" %>
<script language="c#" runat="server">
void page_load(object sender, eventargs e)
注意,儘管你訪問的是asp.net web頁面,但是你檢視該例項所看到的僅僅是xml文件,這個文件跟先前建立的xml檔案是一樣的,所不同的是,先前是儲存為乙個xml檔案userinfo.xml。
總結本文示範了在.net framework中如何使用system.xml.xmltextwriter類來建立xml檔案,xmltextwriter物件可以建立乙個xml檔案,並把它儲存到指定位置,也可以直接以指定的流形式顯示在瀏覽器上,在很多編碼工作中,使用xmltextwriter物件構建基於xml的程式會有很多的優勢,其中主要有可以使**更加簡潔,更具可讀性,同時不用擔心輸出的xml檔案是否符合規範
writer.writestartdocument();
writer.writestartelement("person");
writer.writestartattribute("id",null);
writer.writestring("004");
writer.writeendattribute();
writer.writestartelement("name");
writer.writestring("testwritername");
writer.writeendelement();
writer.writestartelement("number");
writer.writestring("88888");
writer.writeendelement();
writer.writestartelement("city");
writer.writestring("testwritercity");
writer.writeendelement();
writer.flush();
writer.close();
C 如何建立Xml檔案
xmltextwriter物件簡介 xmltextwriter物件包含了很多可用於在建立xml檔案時新增元素和屬性到xml檔案裡的方法,比較重要的有 writestartdocument 建立xml檔案首先就需要用到這個方法,它是在建立xml檔案的第一行 用來指定該檔案是xml檔案以及設定它的編碼型...
建立xml檔案 解析xml檔案
import codecs import xml.dom.minidom doc xml.dom.minidom.document print doc root doc.createelement booklist print u 新增的xml標籤為 root.tagname root.setatt...
Python建立XML檔案,C 解析XML檔案
最近在做一些 移植工作,為了測試正確性,要拿同樣的輸入資料測試,於是打算使用xml來儲存資料,c 進行解析。簡單做個記錄。資料來源使用python生成xml 目標是生成下面的樣子,直接看 吧,python這個xml庫用起來比較簡單,看個例子就會了。c 解析xml qt qdomdocument 剛好...