程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中若何應用 XmlReader 讀取XML文件

C#中若何應用 XmlReader 讀取XML文件

編輯:C#入門知識

C#中若何應用 XmlReader 讀取XML文件。本站提示廣大學習愛好者:(C#中若何應用 XmlReader 讀取XML文件)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中若何應用 XmlReader 讀取XML文件正文


XmlReader經由過程向前讀取文檔並辨認讀取到的元素,為我們供給了一種消費資本起碼的方法來解析XML數據。許多時刻我們都是應用XmlReader來對XML文件的數據有用性停止驗證(應用XmlReader實例的Read()辦法順次讀取一切節點,以此斷定能否與相符指定的形式)。應用這類非緩存、只讀、只向前的方法,每次讀取只將很少的數據放入內存,對內存的占用量較小,關於讀取內容較年夜的XML文件不掉為一種最好的選擇。

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

1、應用XmlReader類的Create()工場辦法創立該類的一個實例,並將被讀取的XML文件名作為參數傳入辦法;

2、樹立一個重復挪用Read()辦法的輪回。這個辦法從文件的第一個節點開端,然後讀取一切余下的節點,但每次挪用只讀取一個節點。假如存在一個節點可被讀取則前往True,而當達到文件最初時則前往False;

3、在這個輪回中,將檢討XmlReader實例的屬性和辦法,以取得關於以後節點的信息(節點的類型、稱號、數據等)。赓續履行輪回直到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 前往以後節點的屬性個數 Depth 前往以後節點的深度,用於斷定指定的節點能否具有子節點 EOF 斷定讀取器能否位於流的末尾 HasAttribute 前往指導以後節點能否具有屬性的布爾值 HasValue 前往指導以後節點能否具有值的布爾值 IsEmptyElement 斷定以後節點能否是一個空元素 LocalName 前往以後節點的當地稱號 Name 前往以後節點的限制稱號 NamespaceURI 前往以後節點的定名空間URI NodeType 以XmlNodeType列舉的情勢前往以後節點的節點類型 Prefix 前往與以後節點相干的定名空間前綴 ReadState 以ReadState列舉的情勢前往讀取器確當前狀況 Settings 前往用於創立XmlReader實例的XmlReaderSettings對象 Value 前往以後節點的值 ValueType 取得以後節點的CLR類型

XmlReader類的主要辦法:

方 法 說 明 Close 經由過程將ReadState列舉設置為Closed來封閉Xmlreader對象 Create 創立XmlReader對象的實例並將其前往給挪用法式 GetAttribute 取得屬性的值 IsStartElement 指導以後節點能否是開端標簽 MoveToAttribute 挪動讀取器到指定的屬性 MoveToContent 假如以後節點不是內容節點,則挪動讀取器至下一個內容節點 MoveToElement 挪動讀取器至包括以後屬性的元素;用於羅列屬性和想切換至包括一切這些屬性的元素 MoveToFirstAttribute 挪動讀取器至以後節點的第一個屬性 MoveToNextAttribute 挪動讀取器至以後節點的下一個屬性 Read 從流中讀取下一個節點 ReadContentAs 讀取供給類型的對象的內容 ReadElementContentAs 讀取以後元素並前往指定類型對象的內容 ReadEndElement 挪動讀取器超出以後停止標簽並挪動到下一個節點 ReadInnerXml 以字符串的情勢讀取包含標志在內確當前節點一切內容 ReadOutXml 讀取包含以後節點標志和子節點在內的節點的內容 ReadToDescendant 挪動讀取器至下一個婚配子孫元素的節點 ReadToFollowing 赓續讀取直至找到指定的元素 ReadToNextSlibing 挪動讀取器至下一個婚配兄弟元素的節點 ReadValueChunk 許可讀取嵌入在XML文檔中的年夜型文本流

XmlNodeType列舉的成員:

成 員 說 明 Attribute 屬性 CDATA CDATA區域 Comment XML正文 Document 文檔對象,表現XML樹的根 DocumentFragment 文檔片段 DocumentType 文檔類型聲明 Element,EndElement 開端元素和停止元素 Entity,EndEntity 開端實體聲明和停止實體聲明 EntityReference 實體援用(如<) None 有無讀取節點而查詢節點類型時應用 Notation DTD中的符號條目 ProcessingInstruction XML處置指令 SignificantWhitespace 在混雜內容模子文檔中的空白,或許設置了xml:space=preserve時應用 Text 元素的文本內容 Whitespace 標志之間的空白 XmlDeclaration 在文檔頂部的XML聲明

XmlReaderSettings類的主要屬性:

屬 性 說 明 CheckCharacters 許可你取得或許設置用於指導能否履行字符檢討的值 ConformanceLevel 取得或設置XmlReader對象的相符請求 IgnoreComment 許可你取得或設置用於指導能否疏忽正文的值 IgnoreProcessingInstruction 指定能否疏忽處置指令 IgnoreWhitespace 指定能否疏忽有意義的空格 ProhibitDtd 指定能否許可DTD處置 Schemas 指定在履行XML驗證時應用的XmlSchemaSet ValidationFlags 取得或許設置用於指定形式驗證設置的值 ValidationType 取得或許設置用於指定所履行的驗證類型的值 XmlResolver 設置用於拜訪內部文檔的XmlReslover

經由過程XmlReaderSettings類,你可以指定一系列由XmlReader對象支撐的功效,為此,只需將XmlReaderSettings作為參數傳入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文件,這類辦法占用內存少,推舉年夜家應用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved