如何讀寫XML文件

這篇文章主要為大家展示了“如何讀寫XML文件”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何讀寫XML文件”這篇文章吧。

柯城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!



       這里我們先介紹操作XML文件的兩個對象:XmlTextReader和XmlTextWriter
       打開和讀取Xml文件使用到的對象就是XmlTextReader對象。下面的例子打開了與程序在同一路徑下的一個例子文件sample.xml

XmlTextReader reader = new XmlTextReader("sample.xml");

然后我們可以通過其Read方法實現(xiàn)自動便利XML文件。例:

while(reader.Read())
{
       //在這里填寫對于XML的操作代碼
}

下面我們看一個復(fù)雜一些的例子。

while(reader.Read())
 2{
 3    switch(reader.NodeType)
 4    {
 5        case XmlNodeType.Element:   //當(dāng)前節(jié)點是一個元素
 6              Console.Write("<" + reader.Name);
 7            while(reader.MoveToNextAttribute()) //按照順序讀取下一個屬性
 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é)點的類型,根據(jù)節(jié)點的不同類型進(jìn)行不同的處理。

下表列出了一些常用的節(jié)點類型。

XmlTextReader的NodeType的取值

類型

說明

All

所有節(jié)點

Attribute

一個屬性

CDATA

轉(zhuǎn)義那些會被看作標(biāo)記語言(如HTML)的文本

Comment

使用<!—和-->分隔的注釋

Document

XML數(shù)據(jù)樹的根節(jié)點

DocumentType

文檔的類型聲明,即<!DOCTYPE…>標(biāo)記

Element

一個元素,通常是XML文件中的實際數(shù)據(jù)

EndTag

元素的結(jié)束位置

None

不是節(jié)點

Text

返回元素的文本內(nèi)容

XMLDeclaration

XML聲明節(jié)點,例如<?xml version=’

在進(jìn)行寫入XML文件時我們使用的XmlTextWriter類,它是XmlWriter的子類,速度快且不使用緩存,但是同XmlTextReader一樣,在寫入XML文件時只能向前。

我們假定要寫入的XML文件在C盤根目錄下:

XmlTextWriter writer = new XmlTextWriter("C:\\sample2.xml",null);

在這里如果不想把數(shù)據(jù)寫入文件,而只是想在命令窗口顯示,則可以把“Console.Out”作為參數(shù)傳遞給構(gòu)造器,此時應(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

寫入實體引用,即前面加“&”后面加“;”

writer.WriteEntityRef("h");

WriteProcessingInstruction

寫入處理指令,即前面加“<?”后面加“?>”

writer.WriteProcessingInstruction("xml-stylesheet",PItext);

WriteComment

寫入注釋,自動加入注釋標(biāo)志“<!--”和“à”

writer.WriteComment("sample XML");

Flush

把緩存中的內(nèi)容寫入文件

writer.Flush();

Close

關(guān)閉,如有未閉合的元素,自動閉合

writer.Close();

其中WriteString方法會對字符串進(jìn)行下述處理:

1.字符“&”、“<”和“>”轉(zhuǎn)化為“&amp;”、“&lt;”和“&gt;”。

2.ASCII碼為0~(十六進(jìn)制)的字符轉(zhuǎn)化為“&#~“&#”。

3.如果是在寫屬性的值則雙引號“””轉(zhuǎn)化為“&quot;”;單引號 “’”轉(zhuǎn)化為“&apos;”。

下面給大家寫出一個例程,由于注釋比較詳細(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        //寫一個元素(根元素)
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        //價格元素
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)容顯示在控制臺
70        Console.Write(doc.InnerXml);  
71        //等待用戶閱讀
72        Console.In.Read();
73    }
74}

以上是“如何讀寫XML文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:如何讀寫XML文件
網(wǎng)址分享:http://muchs.cn/article12/gdecdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、虛擬主機(jī)、響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計公司品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)