XmlTextReader 限于只向前的讀取
XmlTextReader 的技術類似于讀取其他任何文件 首先打開文件,然后從文件中讀取信息,最后關閉文件.
每次從文件中讀取信息時,他在文件中的位置都會前移.到達文件結尾的時候就什么都不讀了。
1 創建XmlTextReader對象
??? XmlTextReader 類:表示提供對 XML 數據進行快速、非緩存、只進訪問的讀取器。
??? public class XmlTextReader : XmlReader, IXmlLineInfo
?例如:創建一個名為myReader的對象,并將他指向一個filename文件.這個文件名可以包含完整的路徑
?XmlTextReader myReader=new XmlTextReader("filename");
?XmlTextReader 構造函數:1 protected XmlTextReader();?? 2 public XmlTextReader(Stream);
??????????????????????? 3 public XmlTextReader(string);等等
?讀取數據:
?注意:XmlTextReader 對象不驗證數據。它假設你已經使用了標準的XML。(缺乏數據驗證有助于獲取最快的速度)
?讀取數據的XMLTextReader方法
?方法??????????????????????????????????? 詳細說明
?Read??????????????????????????????????? 讀取XML文件的下一個結點
?ReadAttributeValue????????????????????? 讀取屬性值
?ReadBase64????????????????????????????? 讀取Base64值
?ReadBinHex????????????????????????????? 讀取BinHex值
?ReadChars?????????????????????????????? 讀取文本字符
?ReadElementString?????????????????????? 讀取只有文本的元素
?ReadEndElement????????????????????????? 讀取結束元素
?ReadInnerXml??????????????????????????? 將XML結點全部內容讀到一個字符串里面
?ReadOuterXml??????????????????????????? 將整個XML結點和它的內容讀到一個字符串里面
?ReadStartElement??????????????????????? 讀取開始元素
?ReadString????????????????????????????? 將一個元素或者文本結點值讀到一個字符串里面
?注意XmlNodeType對象讀取的值與一個XmlNodeType的值相比較完成評估?(詳見 msdn)
?關閉XmlTextReader對象 myReader.Close();
?使用XmlTextReader的實例應用程序
?實例說明:
XmlTextReader 的技術類似于讀取其他任何文件 首先打開文件,然后從文件中讀取信息,最后關閉文件.
每次從文件中讀取信息時,他在文件中的位置都會前移.到達文件結尾的時候就什么都不讀了。
1 創建XmlTextReader對象
??? XmlTextReader 類:表示提供對 XML 數據進行快速、非緩存、只進訪問的讀取器。
??? public class XmlTextReader : XmlReader, IXmlLineInfo
?例如:創建一個名為myReader的對象,并將他指向一個filename文件.這個文件名可以包含完整的路徑
?XmlTextReader myReader=new XmlTextReader("filename");
?XmlTextReader 構造函數:1 protected XmlTextReader();?? 2 public XmlTextReader(Stream);
??????????????????????? 3 public XmlTextReader(string);等等
?讀取數據:
?注意:XmlTextReader 對象不驗證數據。它假設你已經使用了標準的XML。(缺乏數據驗證有助于獲取最快的速度)
?讀取數據的XMLTextReader方法
?方法??????????????????????????????????? 詳細說明
?Read??????????????????????????????????? 讀取XML文件的下一個結點
?ReadAttributeValue????????????????????? 讀取屬性值
?ReadBase64????????????????????????????? 讀取Base64值
?ReadBinHex????????????????????????????? 讀取BinHex值
?ReadChars?????????????????????????????? 讀取文本字符
?ReadElementString?????????????????????? 讀取只有文本的元素
?ReadEndElement????????????????????????? 讀取結束元素
?ReadInnerXml??????????????????????????? 將XML結點全部內容讀到一個字符串里面
?ReadOuterXml??????????????????????????? 將整個XML結點和它的內容讀到一個字符串里面
?ReadStartElement??????????????????????? 讀取開始元素
?ReadString????????????????????????????? 將一個元素或者文本結點值讀到一個字符串里面
?注意XmlNodeType對象讀取的值與一個XmlNodeType的值相比較完成評估?(詳見 msdn)
?關閉XmlTextReader對象 myReader.Close();
?使用XmlTextReader的實例應用程序
?實例說明:
?使用XmlTextReader讀取XML文件
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Xml;
using System.Text;
//
namespace Xmlapp2
public class Form1 : System.Windows.Forms.Form{
//private XmlTextReader xtr=null;public Form1(){//// Windows 窗體設計器支持所必需的//InitializeComponent();xtr=new XmlTextReader(@"temp.xml");//XmlTextReader.WhitespaceHandling 屬性 :獲取或設置一個值,該值指定如何處理空白xtr.WhitespaceHandling=WhitespaceHandling.All;//// TODO: 在 InitializeComponent 調用后添加任何構造函數代碼//}
//private void button2_Click(object sender, System.EventArgs e)//關閉退出{if (xtr!=null){xtr.Close();}Application.Exit();}private void button1_Click(object sender, System.EventArgs e){StringBuilder str=new StringBuilder("Formatted:");if (xtr.Read()==true){label1.Text=xtr.NodeType.ToString();label2.Text=xtr.Name.ToString();label3.Text=xtr.Value.ToString();switch (xtr.NodeType){case XmlNodeType.Element:str.AppendFormat("<{0}>",xtr.Name);break;case XmlNodeType.Text:break;case XmlNodeType.CDATA:str.AppendFormat("<![CDATA[{0}]]>",xtr.Value);break;case XmlNodeType.ProcessingInstruction:str.AppendFormat("<?{0} {1}?>",xtr.Name,xtr.Value);break;case XmlNodeType.Comment:str.AppendFormat("<!--{0}-->",xtr.Value);break;case XmlNodeType.XmlDeclaration:str.AppendFormat("<?xml version='1.0'?>");break;case XmlNodeType.DocumentType:str.AppendFormat("<!DOCTYPE{0} [{1}]>",xtr.Name,xtr.Value);break;case XmlNodeType.EntityReference:str.Append(xtr.Name);break;case XmlNodeType.EndElement:str.AppendFormat("</{0}>",xtr.Name);break;case XmlNodeType.Whitespace://Console.Write("{0}",xtr.Value);break;}label4.Text=str.ToString();}else{label1.Text="Eof";label2.Text="Eof";label3.Text="Eof";}}}