這篇文章主要為大家展示了“如何讀寫XML文件”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何讀寫XML文件”這篇文章吧。
柯城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
這里我們先介紹操作XML文件的兩個(gè)對(duì)象:XmlTextReader和XmlTextWriter
打開和讀取Xml文件使用到的對(duì)象就是XmlTextReader對(duì)象。下面的例子打開了與程序在同一路徑下的一個(gè)例子文件sample.xml
XmlTextReader reader = new XmlTextReader("sample.xml");
然后我們可以通過其Read方法實(shí)現(xiàn)自動(dòng)便利XML文件。例:
while(reader.Read()) { //在這里填寫對(duì)于XML的操作代碼 }
下面我們看一個(gè)復(fù)雜一些的例子。
while(reader.Read()) 2{ 3 switch(reader.NodeType) 4 { 5 case XmlNodeType.Element: //當(dāng)前節(jié)點(diǎn)是一個(gè)元素 6 Console.Write("<" + reader.Name); 7 while(reader.MoveToNextAttribute()) //按照順序讀取下一個(gè)屬性 8 Console.Write(" " + reader.Name + "='" + reader.Value + "'"); 9 Console.Write(">"); 10 break; 11 case XmlNodeType.DocumentType: //XML文件的類型聲明 12 Console.WriteLine(reader.NodeType + "<" + reader.Name + ">" + reader.Value); 13 break; 14 …… 15 } 16 }
從第3行開始我們就根據(jù)NodeType屬性去判斷節(jié)點(diǎn)的類型,根據(jù)節(jié)點(diǎn)的不同類型進(jìn)行不同的處理。
下表列出了一些常用的節(jié)點(diǎn)類型。
XmlTextReader的NodeType的取值 | |
類型 | 說明 |
All | 所有節(jié)點(diǎn) |
Attribute | 一個(gè)屬性 |
CDATA | 轉(zhuǎn)義那些會(huì)被看作標(biāo)記語言(如HTML)的文本 |
Comment | 使用<!—和-->分隔的注釋 |
Document | XML數(shù)據(jù)樹的根節(jié)點(diǎn) |
DocumentType | 文檔的類型聲明,即<!DOCTYPE…>標(biāo)記 |
Element | 一個(gè)元素,通常是XML文件中的實(shí)際數(shù)據(jù) |
EndTag | 元素的結(jié)束位置 |
None | 不是節(jié)點(diǎn) |
Text | 返回元素的文本內(nèi)容 |
XMLDeclaration | XML聲明節(jié)點(diǎn),例如<?xml version=’ |
在進(jìn)行寫入XML文件時(shí)我們使用的XmlTextWriter類,它是XmlWriter的子類,速度快且不使用緩存,但是同XmlTextReader一樣,在寫入XML文件時(shí)只能向前。
我們假定要寫入的XML文件在C盤根目錄下:
XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);
在這里如果不想把數(shù)據(jù)寫入文件,而只是想在命令窗口顯示,則可以把“Console.Out”作為參數(shù)傳遞給構(gòu)造器,此時(shí)應(yīng)把上述語句改為:
XmlTextWriter writer = new XmlTextWriter(Console.Out);
下面我們介紹一下寫入XML文件數(shù)據(jù)的一些常用方法:
XmlTextWriter的常用方法 | ||
方法 | 說明 | 用法 |
WriteStartDocument | 寫XML聲明部分,即“<?xml version=”?>” | writer.WriteStartDocument(); |
WriteEndDocument | 使沒有閉合元素閉合 | writer.WriteEndDocument(); |
WriteDocType | 寫DOCTYPE聲明 | writer.WriteDocType("sample2",null,null,"<!ENTITY h 'hardcover'>"); |
WriteStartElement | 寫元素的開始標(biāo)志 | writer.WriteStartElement("sample2"); |
WriteEndElement | 寫元素的結(jié)束標(biāo)志 | writer.WriteEndElement(); |
WriteString | 寫入字符串 | writer.WriteString("Pride And Prejudice"); |
WriteCData | 寫CDATA塊,即寫入的文字在<![CDATA[…]]>間 | writer.WriteCData("Price 15% off!!"); |
WriteRaw | 手工寫入一行,不作任何處理 | writer.WriteRaw("this & that"); |
WriteEntityRef | 寫入實(shí)體引用,即前面加“&”后面加“;” | writer.WriteEntityRef("h"); |
WriteProcessingInstruction | 寫入處理指令,即前面加“<?”后面加“?>” | writer.WriteProcessingInstruction("xml-stylesheet",PItext); |
WriteComment | 寫入注釋,自動(dòng)加入注釋標(biāo)志“<!--”和“à” | writer.WriteComment("sample XML"); |
Flush | 把緩存中的內(nèi)容寫入文件 | writer.Flush(); |
Close | 關(guān)閉,如有未閉合的元素,自動(dòng)閉合 | writer.Close(); |
其中WriteString方法會(huì)對(duì)字符串進(jìn)行下述處理:
1.字符“&”、“<”和“>”轉(zhuǎn)化為“&”、“<”和“>”。
2.ASCII碼為0~(十六進(jìn)制)的字符轉(zhuǎn)化為“&#~“&#”。
3.如果是在寫屬性的值則雙引號(hào)“””轉(zhuǎn)化為“"”;單引號(hào) “’”轉(zhuǎn)化為“'”。
下面給大家寫出一個(gè)例程,由于注釋比較詳細(xì)就不作過多解釋了。
using System; 2using System.IO; 3using System.Xml; 4 5public class Sample 6{ 7 private const string filename = "sampledata.xml"; 8 9 public static void Main() 10 { 11 XmlTextWriter writer = null; 12 13 writer = new XmlTextWriter (filename, null); 14 //為使文件易讀,使用縮進(jìn) 15 writer.Formatting = Formatting.Indented; 16 17 //寫XML聲明 18 writer.WriteStartDocument(); 19 20 //引用樣式 21 String PItext="type='text/xsl' href='book.xsl'"; 22 writer.WriteProcessingInstruction("xml-stylesheet", PItext); 23 24 //Write the DocumentType node 25 writer.WriteDocType("book", null , null, "<!ENTITY h 'hardcover'>"); 26 27 //寫入注釋 28 writer.WriteComment("sample XML"); 29 30 //寫一個(gè)元素(根元素) 31 writer.WriteStartElement("book"); 32 33 // genre 屬性 34 writer.WriteAttributeString("genre", "novel"); 35 36 // ISBN 屬性 37 writer.WriteAttributeString("ISBN", "1-8630-014"); 38 39 //書名元素 40 writer.WriteElementString("title", "The Handmaid's Tale"); 41 42 //Write the style element 43 writer.WriteStartElement("style"); 44 writer.WriteEntityRef("h"); 45 writer.WriteEndElement(); 46 47 //價(jià)格元素 48 writer.WriteElementString("price", "19.95"); 49 50 //寫入 CDATA 51 writer.WriteCData("Prices 15% off!!"); 52 53 //關(guān)閉根元素 54 writer.WriteEndElement(); 55 56 writer.WriteEndDocument(); 57 58 //緩沖器內(nèi)的內(nèi)容寫入文件 59 writer.Flush(); 60 writer.Close(); 61 62 63 XmlDocument doc = new XmlDocument(); 64 65 doc.PreserveWhitespace = true; 66 //加載文件 67 doc.Load(filename); 68 69 //XML文件的內(nèi)容顯示在控制臺(tái) 70 Console.Write(doc.InnerXml); 71 //等待用戶閱讀 72 Console.In.Read(); 73 } 74}
以上是“如何讀寫XML文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章題目:如何讀寫XML文件
網(wǎng)址分享:http://aaarwkj.com/article12/gdecdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、虛擬主機(jī)、響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)