一
前言
XML是微軟Net戰略的一個重要組成部分而且它可謂是XML Web服務的基石所以掌握Net框架下的XML技術自然顯得非常重要了本文將指導大家如何運用C#語言完成Net框架下的XML文檔的讀寫操作首先我會向大家介紹Net框架中與XML相關的命名空間和其中的重要類其次我還會給出有關的實例以使讀者更進一步的了解XML文檔的讀寫操作的具體方法
二XML命名空間和相關類簡介
在深入進行Net框架下的XML文檔的操作之前我想很有必要向大家介紹Net框架中與XML技術有關的命名空間和其中一些重要的類Net框架為我們提供了以下一些命名空間SystemXmlSystemXmlSchemaSystemXmlSerializationSystemXmlXpath以及 SystemXmlXsl來包容和XML操作相關的類
◆SystemXml命名空間包含了一些最重要的XML類其中最主要的類是和XML文檔的讀寫操作相關的類這些類中包括個與讀相關的類以及個與寫相關的類它們分別是XmlReaderXmlTextReaderXmlValidatingReaderXmlNodeReaderXmlWriter以及 XmlTextWriter本文將重點介紹這些類因為它們是最基本也是最重要的類
◆XmlReader類是一個虛基類它包含了讀XML文檔的方法和屬性該類中的Read方法是一個基本的讀XML文檔的方法它以流形式讀取XML文檔中的節點(Node)另外該類還提供了ReadStringReadInnerXmlReadOuterXml和ReadStartElement等更高級的讀方法除了提供讀XML文檔的方法外XmlReader類還為程序員提供了MoveToAttributeMoveToFirstAttributeMoveToContentMoveToFirstContentMoveToElement以及 MoveToNextAttribute等具有導航功能的方法在本文後面介紹的實例中我們將運用到這些方法
◆XmlTextReaderXmlNodeReader以及XmlValidatingReader等類是從XmlReader類繼承過來的子類根據它們的名稱我們可以知道其作用分別是讀取文本內容讀取節點和讀取XML模式(Schemas)
◆XmlWriter類為程序員提供了許多寫XML文檔的方法它是XmlTextWriter類的基類我在後面的實例中會給出相關的運用方法
◆XmlNode類是一個非常重要的類它代表了XML文檔中的某個節點該節點可以是XML文檔的根節點這樣它就代表整個XML文檔了它是許多很有用的類的基類這些類包括插入節點的類刪除節點的類替換節點的類以及在XML文檔中完成導航功能的類同時XmlNode類還為程序員提供了獲取雙親節點子節點最後一個子節點節點名稱以及節點類型等的屬性它的三個最主要的子類包括XmlDocumentXmlDataDocument以及XmlDocumentFragmentXmlDocument類代表了一個XML文檔它提供了載入和保存XML文檔的方法和屬性這些方法包括了LoadLoadXml和Save等同時它還提供了添加特性(Attributes)說明(Comments)空間(Spaces)元素(Elements)和新節點(New Nodes)等XML項的功能XmlDocumentFragment類代表了一部分XML文檔它能被用來添加到其他的XML文檔中XmlDataDocument類可以讓程序員更好地完成和ADONET中的數據集對象之間的互操作
除了上面介紹的SystemXml命名空間中的類外該命名空間還包括了XmlConvertXmlLinkedNode以及XmlNodeList等類不過這些類不是本文介紹的重點有興趣的讀者不妨去參考相關文檔資料
SystemXmlSchema命名空間中包含了和XML模式相關的類這些類包括XmlSchemaXmlSchemaAllXmlSchemaXPath以及XmlSchemaType等類
SystemXmlSerialization命名空間中包含了和XML文檔的序列化和反序列化操作相關的類XML文檔的序列化操作能將XML格式的數據轉化為流格式的數據並能在網絡中傳輸而反序列化則完成相反的操作即將流格式的數據還原成XML格式的數據
SystemXmlXPath命名空間包含了XPathDocumentXPathExressionXPathNavigator以及XPathNodeIterator等類這些類能完成XML文檔的導航功能在XPathDocument類的協助下XPathNavigator類能完成快速的XML文檔導航功能該類為程序員提供了許多Move方法以完成導航功能SystemXmlXsl命名空間中的類完成了XSLT的轉換功能
三讀XML文檔的方法
在介紹完Net框架中和XML有關的命名空間和相關類後我接著向大家介紹和XML相關的一些操作首先我向大家介紹的讀取XML文檔的方法在下面的實例程序中我將運用VSnet開發工具附帶的booksxml文件來作為示例你可以在你的機器上搜索到該文件(或請參考附錄)或者你也可以運用其他的XML文件
首先我們用XmlTextReader類的對象來讀取該XML文檔方法很簡單就是在創建新對象的構造函數中指明XML文件的位置即可
XmlTextReader textReader = new XmlTextReader(C:\\booksxml);
一旦新對象創建完畢你就可以調用其Read方法來讀取XML文檔了調用Read方法之後信息被存儲起來你可以通過讀取該對象的NameBaseURIDepthLineNumber等屬性來獲取這些信息下面我給出一個完整的實例該實例通過簡單的讀取booksxml文件然後將其中的信息顯示在控制台中
using System;
using SystemXml;
namespace ReadXml
{
class Class
{
static void Main( string[] args )
{
// 創建一個XmlTextReader類的對象並調用Read方法來讀取文件
XmlTextReader textReader = new XmlTextReader(C:\\booksxml);
textReaderRead();
// 節點非空則執行循環體
while ( textReaderRead() )
{
// 讀取第一個元素
textReaderMoveToElement();
ConsoleWriteLine(XmlTextReader Properties Test);
ConsoleWriteLine(===================);
// 讀取該元素的屬性並顯示在控制台中
ConsoleWriteLine(Name: + textReaderName);
ConsoleWriteLine(Base URI: + textReaderBaseURI);
ConsoleWriteLine(Local Name: + textReaderLocalName);
ConsoleWriteLine(Attribute Count: + textReaderAttributeCountToString());
ConsoleWriteLine(Depth: + textReaderDepthToString());
ConsoleWriteLine(Line Number: + textReaderLineNumberToString());
ConsoleWriteLine(Node Type: + textReaderNodeTypeToString());
ConsoleWriteLine(Attribute Count: + textReaderValueToString());
}
}
}
}
XmlTextReader類中有一個很重要的屬性-NodeType
通過該屬性
我們可以知道其節點的節點類型
而枚舉類型XmlNodeType中包含了諸如Attribute
CDATA
Element
Comment
Document
DocumentType
Entity
ProcessInstruction以及WhiteSpace等的XML項的類型
通過與XmlNodeType中的元素的比較
我們可以獲取相應節點的節點類型並對其完成相關的操作
下面我就給出一個實例
該實例讀取每個節點的NodeType
並根據其節點類型顯示其中的內容
同時程序還記錄了XML文件中每種節點類型的數目
[] [] []
From:http://tw.wingwit.com/Article/program/net/201311/15479.html