使用 XmlTextWriter 建立 XML 檔
常見的建立 XML 檔案的方式是使用XmlTextWriter類別。
XmlTextWriter 繼承自 XmlWriter,而 XmlWriter 是抽象類別。
XmlTextWriter常用方法說明如下:
1. WriteStartDocument()
用於寫Xml頭聲明,即
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
>
,如果使用該函數的重載函數WriteStartDocument(bool standalone),就可以設置聲明的standalone屬性,該屬性表示該xml文檔是否與其他檔獨立,即是否需要單獨聲明節點。
2. WriteEndDocument()
該函數儘管不會向xml檔寫任何文本,但必須在編寫結束時調用,以結束寫過程,它會清空XmlTextWriter中維護的所有堆疊和臨時資訊,類似於Dispose()函數。
3. WriteStartElement()
創建當前節點的一個子節點,通常使用WriteStartElement(string LocalName,string Value),其中LocalName表示節點名稱,value表示節點的InnerText
如:
WriteStartElement(
"address"
,
"Tian Jing Road"
);
生成的xml:
<
address
>Tian Jing Road</
address
>
4. WriteEndElement()
一旦使用過一句WriteStartElement()就必須有對應的WriteEndElement(),當WriteEndElement被執行後,當前指向的節點就會轉為父節點,如:
<
shop
>
????
<
address
>Tian Jing Road</
address
>
</
shop
>
在執行WriteStartElement(“address”,”Tian Jing Road”)後,當前指向<address>節點,在WriteEndElement被執行後,當前節點指向<shop>節點
5.WriteStartAttribute()與WriteEndAttribute()
與節點創建函數用法相同
6. WriteAttributeString(string LocalName,string value)
該函數用於創建屬性,與WriteStartAttribute()不同的是它不需要EndAttribute(),直接使用就可以了。
但要注意它與WriteStartAttribute生成的xml的不同之處,看下面的例子:
WriteStartElement(
"address"
);?
WriteStartAttribute(
"state"
,
"California"
);
WriteEndAttribute();
WriteEndElement();
以上程式碼生成的xml:
<
address
d1p1:state
=
""
xmlns:d1p1
=
"California"
/>
WriteStartElement(
"address"
);?
WriteAttributeString(
"state"
,
"California"
);
WriteEndElement();
以上程式碼生成的xml:
<
address
state
=
"California"
/>
也就是說WriteAttributeString生成的是未處理的原始語句,而WriteStartAttribute()生成的是Xml Schema語句
7. WriteElementString(string LocalName, string Value)
與WriteAttributeString的用法相同,其中LocalName為節點名稱,Value為節點的InnerText。
8. WriteString()與WriteRaw()的區別
WriteString(“More >”)生成的Xml是More >
WriteRaw(“More >”)生成的xml是More >
也就是說WriteString會把敏感字元轉換為轉義字元,而WriteRaw()則是直接寫入,不做任何處理
9. WriteCData()
該函數是用來寫用CData包裹的字串,在字串中有敏感字元時很有用
WriteCData(“More >”)生成的Xml是
<![CDATA [More >]] >
10. WriteFullEndElement()
該函數用來寫完整的結束標誌,如
<
address
></
address
>
writer.WriteStartElement(
"address"
,
null
);
writer.WriteFullEndElement();
XmlTextWriter 常用屬性說明如下:
1.Formatting 屬性的預設值為 Formatting.None
2.XmlTextWriter.Indentation屬性,表示縮近字元的字元數,當Formatting屬性為Formatting.Indented時,才會生效
3.XmlTextWriter.IndentChar才會生效,IndentChar是縮近字元,一般使用’\t’,當Formatting屬性為Formatting.Indented時,才會生效
4.QuoteChar屬性表示封閉字元,默認為雙引號
Reference:
http://tung.tsu.edu.tw/lecture/vc_net/chp18_xml_2005.doc
?