日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

XML文件格式解析

發(fā)布時(shí)間:2025/3/21 asp.net 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML文件格式解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

博客轉(zhuǎn)載:

https://www.cnblogs.com/stroll/p/7064503.html

一、xml基礎(chǔ)詳解:

1、概述:

????xml:即可擴(kuò)展標(biāo)記語(yǔ)言,xml是互聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)闹匾ぞ?#xff0c;它可以跨越互聯(lián)網(wǎng)任何的平臺(tái),不受編程語(yǔ)言和操作系統(tǒng)的限制,可以說(shuō)它是一個(gè)擁有互聯(lián)網(wǎng)最高級(jí)別通行證的數(shù)據(jù)攜帶者。xml是當(dāng)前處理結(jié)構(gòu)化文檔信息中相當(dāng)給力的技術(shù),xml有助于在服務(wù)器之間穿梭結(jié)構(gòu)化數(shù)據(jù),這使得開發(fā)人員更加得心應(yīng)手的控制數(shù)據(jù)的存儲(chǔ)和傳輸。

Xml用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。Xml是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)的子集,非常適合Web傳輸。XML提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。

2、xml的特點(diǎn)及作用:

特點(diǎn):

v?xml與操作系統(tǒng)、編程語(yǔ)言的開發(fā)平臺(tái)都無(wú)關(guān);

v?實(shí)現(xiàn)不同系統(tǒng)之間的數(shù)據(jù)交互。

作用:

v?配置應(yīng)用程序和網(wǎng)站;

v?數(shù)據(jù)交互;

v?Ajax基石。

在配置文件里邊所有的配置文件都是以XMl的格式來(lái)編寫的。

跨平臺(tái)進(jìn)行數(shù)據(jù)交互,它可以跨操作系統(tǒng),也可以跨編程語(yǔ)言的平臺(tái)。

Ajax是現(xiàn)在目前比較流行的一個(gè)網(wǎng)絡(luò)交互的技術(shù)。Ajax里面最后一個(gè)x實(shí)際上就是xml的縮寫。Xml(Extensible?Markup?Language)是可擴(kuò)展標(biāo)記語(yǔ)言

?

一個(gè)xml文檔必須要有第一行的聲明和它的文檔元素的描述信息就可以了。

3、xml聲明

?

例子:

注:xml聲明一般是xml文檔的第一行;xml聲明由以下幾個(gè)部分組成:

4、根元素

它是xml文檔里面唯一的;它的開始是放在最前面,結(jié)束是放在最后面。

5、元素:

(1)?所有的xml元素都必須有結(jié)束標(biāo)簽;

(2)?xml標(biāo)簽對(duì)大小寫敏感;

(3)??xml必須正確地嵌套;

(4)元素的命名規(guī)則:

名稱中可以包含字母、數(shù)字或者其他的字符;

名稱不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開始;

名稱中不能包含空格。

(5)空元素

6、屬性

(1)語(yǔ)法

<元素名?屬性名=“屬性值”/>

例:<Student?ID=“S100”>

???????<Name>Tom</Name>

</Student>

(2)注意:

屬性值用雙引號(hào)包裹;一個(gè)元素可以有多個(gè)屬性,它的基本格式為:

<元素名?屬性名=“屬性值”?屬性名=“屬性值”>;

屬性值中不能夠直接包含<.”,&。

7、實(shí)體:

在xml中,一些字符擁有特殊的意義。如果把字符“<”放在xml元素中,會(huì)發(fā)生錯(cuò)誤,這是因?yàn)榻馕銎鲿?huì)把它當(dāng)作新元素的開始,這樣會(huì)產(chǎn)生xml錯(cuò)誤:

為了避免這個(gè)錯(cuò)誤,請(qǐng)用實(shí)體引用來(lái)代替“<”字符:

xml中5個(gè)預(yù)定義實(shí)體

8、注釋

注:注釋內(nèi)容中不要出現(xiàn)”--”;不要把注釋放在標(biāo)簽中間;注釋不能嵌套。

9、總結(jié):

(1)xml描述的是文檔的內(nèi)容與語(yǔ)義,而不是文檔應(yīng)當(dāng)如何顯示;

(2)格式正規(guī)(well?formed)的xml文檔

遵循如下規(guī)則的xml文檔稱為格式正規(guī)的xml文檔:

v?必須有xml聲明語(yǔ)句;

v?必須有且僅有一個(gè)根元素;

v?標(biāo)簽大小寫敏感;

v?屬性值用雙引號(hào);

v?標(biāo)簽成對(duì);

v?空標(biāo)簽關(guān)閉;

v?元素正確嵌套。

(3)有效的(valid)xml文檔。首先xml文檔是個(gè)格式正規(guī)的xml文檔,然后又需要滿足DTD的要求,這樣的xml文檔稱為有效的xml文檔;

10、解析器

11、命名空間

11.1、xml命名空間(xml?Namespaces)

(1)xml命名空間提供避免元素命名沖突的方法。

(2)在xml中,元素名稱是由開發(fā)者定義的,當(dāng)兩個(gè)不同的文檔使用相同的元素名時(shí),就會(huì)發(fā)生命名沖突。

11.2、xml命名空間示例

(1)使用前綴示例

與僅僅使用前綴不同,我們?yōu)闃?biāo)簽添加了一個(gè)xmlns屬性,這樣就為前綴賦予了一個(gè)與某個(gè)命名空間相關(guān)聯(lián)的限定名稱。

二、DTD技術(shù)——xml文件的驗(yàn)證機(jī)制

1、DTD概述:

文檔類型定義——Document?Type?Definition

DTD用來(lái)描述xml文檔的結(jié)構(gòu),一個(gè)DTD文檔包含:??

元素的定義規(guī)則;元素之間的關(guān)系規(guī)則;屬性的定義規(guī)則。

2、為什么要用DTD呀

v?有了DTD,每個(gè)xml文件可以攜帶一個(gè)自身格式的描述,所謂格式描述就是我的xml文檔里面可以寫哪些東西,比如元素、屬性;

v?有了DTD,不同組織的人可以使用一個(gè)通用DTD用來(lái)交換數(shù)據(jù),xml是隨意定義的,有了DTD,我們可以限制多個(gè)公司之間按照這種DTD的規(guī)則來(lái)編寫xml文檔,由于DTD都是統(tǒng)一格式,所以不同的公司之間,不同的組織之間就可以用這種通用的xml文檔格式進(jìn)行交互數(shù)據(jù)了;

v?應(yīng)用程序可以使用一個(gè)標(biāo)準(zhǔn)DTD校檢從外部接收的xml數(shù)據(jù)是否有效。

3、如何編寫一個(gè)DTD

DTD分成三大類,第一是內(nèi)部DTD,第二是外部DTD,第三是內(nèi)外結(jié)合的DTD。

(1)內(nèi)部DTD文檔(Students.xml):

(2)就是說(shuō)這個(gè)xml文檔里面既包含xml定義,又包含DTD的定義。

這個(gè)[]里面是DTD的定義的內(nèi)容,就是第一個(gè)叫內(nèi)部DTD文檔。

(3)外部DTD文檔(Students.xml??Students.dtd):

所謂外部就是DTD的定義和我們的xml文檔是在不同的文件里面。

那么外部的DTD如何使用呢?那就需要在前面的xml文檔的根元素的上面這個(gè)位置跟剛才內(nèi)部的是一樣的,要寫上

這類年改革文檔在同一個(gè)文件夾下面,就可以了。

有內(nèi)部DTD了,為什么還要學(xué)習(xí)外部DTD呢??

內(nèi)部的DTD,它只能驗(yàn)證當(dāng)前的這個(gè)xml文檔。那假如說(shuō),我們有一個(gè)DTD需要驗(yàn)證多個(gè)xml文檔的話,那就直接使用外部DTD就行。

(4)內(nèi)外部DTD文檔結(jié)合

4、DTD的具體定義——元素的定義

元素名稱:是指xml文檔里面的元素名稱

元素類型:

(1)EMPTY

示例第一個(gè)是對(duì)的,第二個(gè)是錯(cuò)誤的,因?yàn)樗袃?nèi)容了。

(2)#PCDATA

第一個(gè)是對(duì)的,第二個(gè)是錯(cuò)誤的。

(3)純?cè)仡愋偷腄TD語(yǔ)法

(4)ANY

5、定義屬性的語(yǔ)法結(jié)構(gòu)

xml文檔攜帶數(shù)據(jù)的方式,不僅僅是xml的元素的內(nèi)容,還可以是元素的屬性。

所以說(shuō)在DTD里面我們有必要對(duì)屬性進(jìn)行限制。

(1)編寫屬性驗(yàn)證的語(yǔ)法規(guī)則:

(2)屬性類型——CDATA

CDATA是表示屬性的值,可以是任何字符,這里包括數(shù)字和中文。

問題一:屬性的CDATA與元素的CDATA節(jié)有何區(qū)別呢??

屬性的CDATA表示屬性值是任何的字符,元素里的CDATA節(jié)是表示在CDATA節(jié)里面的內(nèi)容不被xml文檔進(jìn)行解析。

問題二:#PCDATA與CDATA有何區(qū)別??

#PCDATA是限制元素里面的內(nèi)容是字符類型的,而這個(gè)CDATA是限制屬性里面的內(nèi)容是字符類型。

(3)屬性類型——ID

表明該屬性的取值必須是唯一的。

(4)屬性類型——IDREF/IDREFS

v?IDREF是指它的值要指向文檔當(dāng)中其它地方聲明的ID。把IDREF當(dāng)成數(shù)據(jù)庫(kù)的外鍵,把ID當(dāng)成主鍵理解就行;

v?IDREFS同IDREF,但是可以具有由空格分開的多個(gè)引用;

(5)屬性類型——Enumerated

預(yù)先定義了一些值,屬性的值必須在所列出的值的范圍內(nèi)

(6)屬性特點(diǎn)——#REQUIRED

它表示元素的所有的實(shí)例都必須有該屬性的值(NOT?NULL)

(7)屬性特點(diǎn)——#IMPLIED

這就表示該屬性的值是可以被忽略的。

(8)屬性特點(diǎn)——#FIXED

元素中該屬性的值必須為指定的固定值。

(9)屬性特點(diǎn)——Default

為屬性提供一個(gè)默認(rèn)的值。

三、實(shí)體

1、實(shí)體概述

實(shí)體,簡(jiǎn)單理解就是C#中的常量,我們?cè)贒TD里面定義,在xml文檔里面去使用。(實(shí)際上就是自定義實(shí)體,與前面的預(yù)定義實(shí)體差不多是一回事)。

2、實(shí)體的定義

四、xml之Schema技術(shù)

1、Schema概述:xml?Schema是用一套預(yù)先規(guī)定的xml元素和屬性創(chuàng)建的,這些元素和屬性定義了xml文檔的結(jié)構(gòu)和內(nèi)容模式。Xml?Shema規(guī)定xml文檔實(shí)例的結(jié)構(gòu)和每個(gè)元素/屬性的數(shù)據(jù)類型。

理解:對(duì)于Schema來(lái)講,我們可以將shema比喻成為是表結(jié)構(gòu)。在表結(jié)構(gòu)里,定義一些數(shù)據(jù)的限制要求。然后我們xml文檔呢就相當(dāng)于是數(shù)據(jù)表將來(lái)要存儲(chǔ)的數(shù)據(jù)u,也就是數(shù)據(jù)庫(kù)里面的數(shù)據(jù)表數(shù)據(jù)了,所以整體來(lái)講的話schema它就是用于驗(yàn)證xml文檔的。

2、有了DTD,為什么要用Schema呢?

(1)DTD的局限性

DTD不遵守xml語(yǔ)法(寫xml文檔實(shí)例時(shí)用一種語(yǔ)法,寫DTD的時(shí)候用另外一種語(yǔ)法);DTD數(shù)據(jù)類型有限(與數(shù)據(jù)庫(kù)數(shù)據(jù)類型不一致);DTD不可擴(kuò)展;DTD不支持命名空間(命名沖突)。

(2)Schema的新特性

Shema基于xml語(yǔ)法的;Shema可以用能處理xml文檔的工具處理;Schema大大擴(kuò)充了數(shù)據(jù)類型,可以自定義數(shù)據(jù)類型;Schema支持元素的繼承——Object-Oriented;Shema支持屬性組。

3、Shema(模式):其作用與DTD一樣,也是用于驗(yàn)證xml文檔的有效性,只不過它提供了比DTD更強(qiáng)大的功能和更細(xì)粒度的數(shù)據(jù)類型,另外Schema還可以自定義數(shù)據(jù)類型。此外,Schema也是一個(gè)xml文件,而DTD則不是。

4、所有的Schema文檔,其根元素必須為Schema。

5、Schema的文檔結(jié)構(gòu)

6、Schema的數(shù)據(jù)類型

6.1、Schema的數(shù)據(jù)類型概述

6.2、簡(jiǎn)單類型:

(1)內(nèi)置的數(shù)據(jù)類型:

基本的數(shù)據(jù)類型;

擴(kuò)展的數(shù)據(jù)類型;

(2)用戶自定義簡(jiǎn)單類型(通過simpleType定義)。

6.3、復(fù)合類型(通過complexType定義)

6.4、數(shù)據(jù)類型的特征

7、Schema的元素類型

7.1、Schema根元素

作用:包含已經(jīng)定義的Schema

用法:<xs:schema>

屬性:xmlns/targetNamespace/elementFormDefault

例子:

7.2、element元素

作用:聲明一個(gè)元素

屬性:name/type/ref/minOccurs/maxOccurs

例子:

7.3、group元素

作用:把一組元素聲明組合在一起

屬性:name

例子:

7.4、attribute元素

作用:聲明一個(gè)屬性

屬性:name/type/use/default/fixed

例子:

7.5、attributeGroup元素

作用:把一組屬性聲明組合在一起

屬性:name/ref

例子:

7.6、simpleType元素

作用:定義一個(gè)簡(jiǎn)單類型,它決定了元素和屬性值的約束和相關(guān)信息

屬性:name

常用的兩種方式:restriction——>一個(gè)約束;list——>從列表中選擇。

(1)simpleType元素的子元素——>restriction

子元素為:<xs:restriction>——>定義一個(gè)約束條件

例子:

(2)simpleType元素的子元素——>list

子元素為:<xs:list>——>從一個(gè)特定數(shù)據(jù)類型的集合中選擇定義一個(gè)簡(jiǎn)單類型元素。

例子:

7.7、complexType元素

作用:定義一個(gè)復(fù)合類型,它決定了一組元素和屬性值的約束和相關(guān)信息。

屬性:name

常用的兩種方式:sequence——>一個(gè)序列;choice——>設(shè)置選擇項(xiàng)。

(1)complexType元素——sequence

作用:給一組元素一個(gè)特定的序列

例子:

(2)complexType元素——choice

作用:把一組屬性聲明組合在一起,以便可以被復(fù)合類型應(yīng)用

屬性:name/ref

例子:

7.8、complexType與simpleType區(qū)別

simpleType類型的元素中不能包含元素或者屬性;

當(dāng)需要聲明一個(gè)元素的子元素和或?qū)傩詴r(shí),用complexType;

當(dāng)需要基于內(nèi)置的基本數(shù)據(jù)類型定義一個(gè)新的數(shù)據(jù)類型時(shí),用simpleType。

總結(jié)

以上是生活随笔為你收集整理的XML文件格式解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。