欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)介C#讀取XML的兩種方式

 更新時(shí)間:2013年03月03日 15:26:02   作者:  
在程序中訪問進(jìn)而操作XML文件一般有兩種模型,分別是使用DOM(文檔對(duì)象模型)和流模型,使用DOM的好處在于它允許編輯和更新XML文檔,可以隨機(jī)訪問文檔中的數(shù)據(jù),可以使用XPath查詢

XML作用

    對(duì)于XML,想必各位都比較了解,我也就不用費(fèi)筆墨來描述它是什么了,我想在未來的Web開發(fā)中XML一定會(huì)大放異彩,XML是可擴(kuò)展標(biāo)記語言,使用它企業(yè)可以制定一套自己的數(shù)據(jù)格式。用于Internet的數(shù)據(jù)傳輸,我想,這是XML對(duì)于我們這些程序員最誘人的地方!

    我們今天的主題不是論述XML的好處,而是討論在C#中如何使用XML。下面我們來了解一下使用程序訪問XML的一些基礎(chǔ)理論知識(shí)。

訪問的兩種模型:

    在程序中訪問進(jìn)而操作XML文件一般有兩種模型,分別是使用DOM(文檔對(duì)象模型)和流模型,使用DOM的好處在于它允許編輯和更新XML文檔,可以隨機(jī)訪問文檔中的數(shù)據(jù),可以使用XPath查詢,但是,DOM的缺點(diǎn)在于它需要一次性的加載整個(gè)文檔到內(nèi)存中,對(duì)于大型的文檔,這會(huì)造成資源問題。流模型很好的解決了這個(gè)問題,因?yàn)樗鼘?duì)XML文件的訪問采用的是流的概念,也就是說,任何時(shí)候在內(nèi)存中只有當(dāng)前節(jié)點(diǎn),但它也有它的不足,它是只讀的,僅向前的,不能在文檔中執(zhí)行向后導(dǎo)航操作。雖然是各有千秋,但我們也可以在程序中兩者并用實(shí)現(xiàn)優(yōu)劣互補(bǔ)嘛,呵呵

一、DOM文檔對(duì)象模型操作

復(fù)制代碼 代碼如下:

using System.Xml;

XmlDocument xml=new XmlDocument();//初始化一個(gè)xml實(shí)例
xml.Load(path);//導(dǎo)入指定xml文件
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));XmlNode root=xml.SelectSingleNode("/root");//指定一個(gè)節(jié)點(diǎn)
XmlNodeList childlist=root.ChildNodes;//獲取節(jié)點(diǎn)下所有直接子節(jié)點(diǎn)
XmlNodeList nodelist=xml.SelectNodes("/Root/News");//獲取同名同級(jí)節(jié)點(diǎn)集合string id=node.Attributes["id"].Value;//獲取指定節(jié)點(diǎn)的指定屬性值
string content=node.InnerText;//獲取指定節(jié)點(diǎn)中的文本
root.HasChildNodes;//判斷該節(jié)點(diǎn)下是否有子節(jié)點(diǎn)

1.XmlDocument類的屬性

   XmlDocument類的屬性及說明如下表所示。

屬性

說明

Attributes

當(dāng)前節(jié)點(diǎn)的屬性集合

BaseURI

當(dāng)前節(jié)點(diǎn)的基URI

ChildNodes

節(jié)點(diǎn)的所有子節(jié)點(diǎn)

DocumentElement

文檔的根

DocumentType

DOCTYPE 聲明的節(jié)點(diǎn)

FirstChild

節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)

HasChildNodes

是否有任何子節(jié)點(diǎn)

Implementation

獲取當(dāng)前文檔的 XmlImplementation對(duì)象

InnerText

節(jié)點(diǎn)包含的所有文本內(nèi)容

InnerXml

節(jié)點(diǎn)所包含的所有XML內(nèi)容

IsReadOnly

當(dāng)前節(jié)點(diǎn)是否是只讀的

Item

獲取指定的子元素

LastChild

最后一個(gè)子節(jié)點(diǎn)

LocalName

獲取節(jié)點(diǎn)的本地名稱

Name

獲取節(jié)點(diǎn)的限定名

NamespaceURI

獲取該節(jié)點(diǎn)的命名空間 URI

NameTable

獲取與此實(shí)現(xiàn)關(guān)聯(lián)的 XmlNameTable

NextSibling

獲取緊接在該節(jié)點(diǎn)之后的節(jié)點(diǎn)

NodeType

獲取當(dāng)前節(jié)點(diǎn)的類型

OuterXml

獲取表示此節(jié)點(diǎn)及其所有子節(jié)點(diǎn)的標(biāo)記

OwnerDocument

獲取當(dāng)前節(jié)點(diǎn)所屬的 XmlDocument

ParentNode

獲取該節(jié)點(diǎn)(對(duì)于可以具有父級(jí)的節(jié)點(diǎn))的父級(jí)

Prefix

獲取或設(shè)置該節(jié)點(diǎn)的命名空間前綴

PreserveWhitespace

獲取或設(shè)置一個(gè)值,該值指示是否在元素內(nèi)容中保留空白

PreviousSibling

獲取緊接在該節(jié)點(diǎn)之前的節(jié)點(diǎn)

SchemaInfo

返回節(jié)點(diǎn)的后架構(gòu)驗(yàn)證信息集 (PSVI)

Schemas

獲取或設(shè)置與此 XmlDocument 關(guān)聯(lián)的 XmlSchemaSet 對(duì)象

Value

獲取或設(shè)置節(jié)點(diǎn)的值

XmlResolver

設(shè)置 XmlResolver 以用于解析外部資源

  2.XmlDocument類的方法

   XmlDocument類的方法及說明如下表所示。

方法

說明

AppendChild

將指定的節(jié)點(diǎn)添加到該節(jié)點(diǎn)的子節(jié)點(diǎn)列表的末尾

CreateAttribute

創(chuàng)建具有指定名稱的 XmlAttribute

CreateCDataSection

創(chuàng)建包含指定數(shù)據(jù)的 XmlCDataSection

CreateComment

創(chuàng)建包含指定數(shù)據(jù)的 XmlComment

CreateDocumentFragment

創(chuàng)建 XmlDocumentFragment

CreateDocumentType

返回新的 XmlDocumentType 對(duì)象

CreateElement

創(chuàng)建 XmlElement

CreateEntityReference

創(chuàng)建具有指定名稱的 XmlEntityReference

CreateNavigator

創(chuàng)建一個(gè)用于導(dǎo)航此文檔的新 XPathNavigator 對(duì)象

CreateNode

創(chuàng)建 XmlNode

CreateProcessingInstruction

創(chuàng)建一個(gè)具有指定名稱和數(shù)據(jù)的 XmlProcessingInstruction

CreateSignificantWhitespace

創(chuàng)建一個(gè) XmlSignificantWhitespace 節(jié)點(diǎn)

CreateTextNode

創(chuàng)建具有指定文本的 XmlText

CreateWhitespace

創(chuàng)建一個(gè) XmlWhitespace 節(jié)點(diǎn)

CreateXmlDeclaration

創(chuàng)建一個(gè)具有指定值的 XmlDeclaration 節(jié)點(diǎn)

GetElementById

獲取具有指定 ID 的 XmlElement

GetElementsByTagName

返回一個(gè) XmlNodeList ,它包含與指定名稱匹配的所有元素的列表

GetNamespaceOfPrefix 

查找當(dāng)前節(jié)點(diǎn)范圍內(nèi)離給定的前綴最近的 xmlns 聲明,并返回聲明中的命名空間 URI

GetPrefixOfNamespace 

查找當(dāng)前節(jié)點(diǎn)范圍內(nèi)離給定的命名空間 URI 最近的 xmlns 聲明,并返回聲明中定義的前綴

GetType

獲取當(dāng)前實(shí)例的 Type

ImportNode

將節(jié)點(diǎn)從另一個(gè)文檔導(dǎo)入到當(dāng)前文檔

InsertAfter

將指定的節(jié)點(diǎn)緊接著插入指定的引用節(jié)點(diǎn)之后

InsertBefore

將指定的節(jié)點(diǎn)緊接著插入指定的引用節(jié)點(diǎn)之前

Load

加載指定的 XML 數(shù)據(jù)

LoadXml

從指定的字符串加載 XML 文檔

Normalize 

將XmlText 節(jié)點(diǎn)都轉(zhuǎn)換成“正常”形式

PrependChild 

將指定的節(jié)點(diǎn)添加到該節(jié)點(diǎn)的子節(jié)點(diǎn)列表的開頭

ReadNode

根據(jù) XmlReader 中的信息創(chuàng)建一個(gè) XmlNode 對(duì)象。讀取器必須定位在節(jié)點(diǎn)或?qū)傩陨?/P>

RemoveAll 

移除當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)和/或?qū)傩?/P>

RemoveChild 

移除指定的子節(jié)點(diǎn)

ReplaceChild 

用新節(jié)點(diǎn)替換舊節(jié)點(diǎn)

Save

將 XML 文檔保存到指定的位置

SelectNodes 

選擇匹配XPath 表達(dá)式的節(jié)點(diǎn)列表

SelectSingleNode 

選擇匹配 XPath 表達(dá)式的第一個(gè) XmlNode

Supports 

測(cè)試 DOM 實(shí)現(xiàn)是否實(shí)現(xiàn)特定的功能

Validate

驗(yàn)證 XmlDocument 是不是 Schemas 屬性中包含的 XML 架構(gòu)定義語言 (XSD) 架構(gòu)。

WriteContentTo

將 XmlDocument 節(jié)點(diǎn)的所有子級(jí)保存到指定的 XmlWriter 中

WriteTo

將 XmlDocument 節(jié)點(diǎn)保存到指定的 XmlWriter

  下面對(duì)常用的方法進(jìn)行介紹。

  (1)Load方法

  該方法可以從一個(gè)字符串指定的XML文件或是一個(gè)流對(duì)象、一個(gè)TextReader對(duì)象、一個(gè)XmlReader對(duì)象導(dǎo)入XML數(shù)據(jù)。

  (2)LoadXml方法

  該方法完成從一個(gè)特定的XML文件導(dǎo)入XML數(shù)據(jù)的功能。默認(rèn)情況下,LoadXml 方法既不保留空白,也不保留有意義的空白。此方法不執(zhí)行 DTD 或架構(gòu)驗(yàn)證。

  (3)Save方法

  該方法將XML數(shù)據(jù)保存到一個(gè)XML文件或是一個(gè)流對(duì)象、一個(gè)TextReader對(duì)象、一個(gè)XmlReader對(duì)象導(dǎo)入XML數(shù)據(jù)。

  3.XmlDocument類的事件

    XmlDocument類的事件及說明如下表所示。

                       表   XmlDocument類的事件及說明

事件

說明

NodeChanged

當(dāng)屬于該文檔的節(jié)點(diǎn)的 Value已被更改時(shí)發(fā)生

NodeChanging

當(dāng)屬于該文檔的節(jié)點(diǎn)的 Value 將被更改時(shí)發(fā)生

NodeInserted

當(dāng)屬于該文檔的節(jié)點(diǎn)已被插入另一個(gè)節(jié)點(diǎn)時(shí)發(fā)生

NodeInserting

當(dāng)屬于該文檔的節(jié)點(diǎn)將被插入另一個(gè)節(jié)點(diǎn)時(shí)發(fā)生

NodeRemoved

當(dāng)屬于該文檔的節(jié)點(diǎn)已被從其父級(jí)移除時(shí)發(fā)生

NodeRemoving

當(dāng)屬于該文檔的節(jié)點(diǎn)將被從文檔中移除時(shí)發(fā)生

http://kb.cnblogs.com/page/42226/ 

相關(guān)文章

最新評(píng)論