欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

C#中如何使用 XmlReader 讀取XML文件

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

XmlReader通過向前讀取文檔并識別讀取到的元素,為我們提供了一種消耗資源最少的方式來解析XML數(shù)據(jù)。很多時候我們都是利用XmlReader來對XML文件的數(shù)據(jù)有效性進行驗證(使用XmlReader實例的Read()方法依次讀取所有節(jié)點,以此判斷是否與符合指定的模式)。使用這種非緩存、只讀、只向前的方式,每次讀取只將很少的數(shù)據(jù)放入內(nèi)存,對內(nèi)存的占用量較小,對于讀取內(nèi)容較大的XML文件不失為一種最佳的選擇。

讓我們看看XmlReader類讀取XML文件的步驟:

1、使用XmlReader類的Create()工廠方法創(chuàng)建該類的一個實例,并將被讀取的XML文件名作為參數(shù)傳入方法;

2、建立一個反復調(diào)用Read()方法的循環(huán)。這個方法從文件的第一個節(jié)點開始,然后讀取所有余下的節(jié)點,但每次調(diào)用只讀取一個節(jié)點。如果存在一個節(jié)點可被讀取則返回True,而當?shù)竭_文件最后時則返回False;

3、在這個循環(huán)中,將檢查XmlReader實例的屬性和方法,以獲得關于當前節(jié)點的信息(節(jié)點的類型、名稱、數(shù)據(jù)等)。不斷執(zhí)行循環(huán)直到Read()返回False;

下面首先看一個示例:

Employees.xml文件:

<?xml version='1.0'?>
<employees>
 <employee id="1"> 
 <name>
 <firstName>Nancy</firstName>
 <lastName>Davolio</lastName> 
 </name>
 <city>Seattle</city>
 <state>WA</state>
 <zipCode>98122</zipCode> 
 </employee>
 <employee id="2"> 
 <name>
 <firstName>Andrew</firstName>
 <lastName>Fuller</lastName>
 </name>
 <city>Tacoma</city>
 <state>WA</state>
 <zipCode>98401</zipCode> 
 </employee> 
</employees>

aspx代碼:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml" %>
<script runat="server">
 void Page_Load(object sender, EventArgs e)
 {
 //Location of XML file
 string xmlFilePath = Server.MapPath("~/Employees.xml");
 try
 {
 using (XmlReader reader = XmlReader.Create(xmlFilePath))
 {
 string result;
 while (reader.Read())
 {
 //Process only the elements
 if (reader.NodeType == XmlNodeType.Element)
 {
 result = "";
 for (int count = 1; count <= reader.Depth; count++)
 {
 result += "===";
 }
 result += "=> " + reader.Name + "<br/>";
 lblResult.Text += result;
 }
 }
 }
 }
 catch (Exception ex)
 {
 lblResult.Text = "An Exception occurred: " + ex.Message;
 } 
 }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
 <title>Reading an XML File using XmlReader</title>
</head>
<body>
 <form id="form1" runat="server">
 <div>
 <asp:label id="lblResult" runat="server" />
 </div>
 </form>
</body>
</html>

輸出結果:

=> employees
====> employee
=======> name
==========> firstName
==========> lastName
=======> city
=======> state
=======> zipCode
====> employee
=======> name
==========> firstName
==========> lastName
=======> city
=======> state
=======> zipCode

下面讓我們看看XmlReader類的屬性和方法:

屬 性 說 明
AttributeCount 返回當前節(jié)點的屬性個數(shù)
Depth 返回當前節(jié)點的深度,用于判斷指定的節(jié)點是否具有子節(jié)點
EOF 判斷讀取器是否位于流的末端
HasAttribute 返回指示當前節(jié)點是否具有屬性的布爾值
HasValue 返回指示當前節(jié)點是否具有值的布爾值
IsEmptyElement 判斷當前節(jié)點是否是一個空元素
LocalName 返回當前節(jié)點的本地名稱
Name 返回當前節(jié)點的限定名稱
NamespaceURI 返回當前節(jié)點的命名空間URI
NodeType 以XmlNodeType枚舉的形式返回當前節(jié)點的節(jié)點類型
Prefix 返回與當前節(jié)點相關的命名空間前綴
ReadState 以ReadState枚舉的形式返回讀取器的當前狀態(tài)
Settings 返回用于創(chuàng)建XmlReader實例的XmlReaderSettings對象
Value 返回當前節(jié)點的值
ValueType 獲得當前節(jié)點的CLR類型

XmlReader類的重要方法:

方 法 說 明
Close 通過將ReadState枚舉設置為Closed來關閉Xmlreader對象
Create 創(chuàng)建XmlReader對象的實例并將其返回給調(diào)用程序
GetAttribute 獲得屬性的值
IsStartElement 指示當前節(jié)點是否是開始標簽
MoveToAttribute 移動讀取器到指定的屬性
MoveToContent 如果當前節(jié)點不是內(nèi)容節(jié)點,則移動讀取器至下一個內(nèi)容節(jié)點
MoveToElement 移動讀取器至包含當前屬性的元素;用于列舉屬性以及想切換至包含所有這些屬性的元素
MoveToFirstAttribute 移動讀取器至當前節(jié)點的第一個屬性
MoveToNextAttribute 移動讀取器至當前節(jié)點的下一個屬性
Read 從流中讀取下一個節(jié)點
ReadContentAs 讀取提供類型的對象的內(nèi)容
ReadElementContentAs 讀取當前元素并返回指定類型對象的內(nèi)容
ReadEndElement 移動讀取器越過當前結束標簽并移動到下一個節(jié)點
ReadInnerXml 以字符串的形式讀取包括標記在內(nèi)的當前節(jié)點所有內(nèi)容
ReadOutXml 讀取包括當前節(jié)點標記和子節(jié)點在內(nèi)的節(jié)點的內(nèi)容
ReadToDescendant 移動讀取器至下一個匹配子孫元素的節(jié)點
ReadToFollowing 不斷讀取直至找到指定的元素
ReadToNextSlibing 移動讀取器至下一個匹配兄弟元素的節(jié)點
ReadValueChunk 允許讀取嵌入在XML文檔中的大型文本流

XmlNodeType枚舉的成員:

成 員 說 明
Attribute 屬性
CDATA CDATA區(qū)域
Comment XML注釋
Document 文檔對象,表示XML樹的根
DocumentFragment 文檔片斷
DocumentType 文檔類型聲明
Element,EndElement 開始元素和結束元素
Entity,EndEntity 開始實體聲明和結束實體聲明
EntityReference 實體引用(如<)
None 有沒有讀取節(jié)點而查詢節(jié)點類型時使用
Notation DTD中的符號條目
ProcessingInstruction XML處理指令
SignificantWhitespace 在混合內(nèi)容模型文檔中的空白,或者設置了xml:space=preserve時使用
Text 元素的文本內(nèi)容
Whitespace 標記之間的空白
XmlDeclaration 在文檔頂部的XML聲明

XmlReaderSettings類的重要屬性:

屬 性 說 明
CheckCharacters 允許你獲得或者設置用于指示是否執(zhí)行字符檢查的值
ConformanceLevel 獲得或設置XmlReader對象的符合要求
IgnoreComment 允許你獲得或設置用于指示是否忽略注釋的值
IgnoreProcessingInstruction 指定是否忽略處理指令
IgnoreWhitespace 指定是否忽略無意義的空格
ProhibitDtd 指定是否允許DTD處理
Schemas 指定在執(zhí)行XML驗證時使用的XmlSchemaSet
ValidationFlags 獲得或者設置用于指定模式驗證設置的值
ValidationType 獲得或者設置用于指定所執(zhí)行的驗證類型的值
XmlResolver 設置用于訪問外部文檔的XmlReslover

通過XmlReaderSettings類,你可以指定一系列由XmlReader對象支持的功能,為此,只需將XmlReaderSettings作為參數(shù)傳入XmlReader的Create()方法中即可。如下所示:

<script runat="server">
 void Page_Load(object sender, EventArgs e)
 {
 string xmlFilePath = Server.Mappath("~/Employees.xml"); 
 //Create the XmlReaderSettings object and set appropriate properties
 XmlReaderSettings settings = new XmlReaderSettings();
 settings.IgnoreComments = true;
 settings.IgnoreWhitespace = true;
 try
 {
 //Get reference to the XmlReader object
 using (XmlReader reader = XmlReader.Create(xmlFilePath, settings))
 {
 string result;
 while (reader.Read())
 {
 //Process only the elements
 if (reader.NodeType == XmlNodeType.Element)
 {
 //Reset the variable for a new element
 result = "";
 for (int count = 1; count <= reader.Depth; count++)
 {
 result += "===";
 }
 result += "=> " + reader.Name + "<br/>";
 lblResult.Text += result;
 }
 }
 }
 }
 catch (Exception ex)
 {
 lblResult.Text = "An Exception occurred: " + ex.Message;
 }
 }

</script>

總結下來,我們可以使用XmlReader類以非緩存、只讀、只向前的方式讀取XML文件,這種方法占用內(nèi)存少,推薦大家使用。

上一篇:C#清除WebBrowser中Cookie緩存的方法

欄    目:C#教程

下一篇:C# ComboBox的聯(lián)動操作(三層架構)

本文標題:C#中如何使用 XmlReader 讀取XML文件

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6521.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權所有