日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

了解 XML實現(xiàn)通用的數(shù)據(jù)訪問(2)_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:XML卷之實戰(zhàn)錦囊(1)——動態(tài)排序
排序功能讓我們頁面上的數(shù)據(jù)顯的更人性化,是我們在網(wǎng)站上見過的很普遍的一個功能效果了。以往的自動排序都是用大量的腳本代碼來完成的,對一般的愛好者來說這是件困難的事情。然而用XML來處理

XML 信息集

W3C XML Information Set 推薦描述了 XML 文檔的抽象表現(xiàn)形式。XML 信息集主要用作各種 XML 技術(shù)使用的定義集,以正式描述需要技術(shù)處理的 XML 文檔部分。有幾種 W3C XML 技術(shù)是按照 XML 信息集進行描述的,包括 SOAP 1.2、XML 架構(gòu)和 XQuery。

XML 信息集是 XML 文檔的樹狀層次表示。一個 XML 文檔的信息集包含許多信息項,這些信息項是 XML 文檔組件的抽象表示,其中包括表示文檔、文檔的元素、屬性、處理指令、注釋、字符、表示法、命名空間、未分析的實體、未擴展的實體引用和文檔類型聲明的信息項。XML 信息集是被正式推薦的機制,通過它來定義 XML 文檔中應(yīng)被重視的重要信息。例如,信息集不區(qū)分空元素的兩種形式。因此根據(jù) XML 信息集,以下兩種表示方法

<test></test>

<test/>

是相同的。同樣,屬性所使用的引號類型也不重要,因此根據(jù) XML 信息集,元素

<test attr='value'/>

<test attr="value"/>

是相同的。XML 信息集認為不重要的 XML 1.0 語法內(nèi)容列表在 W3C XML Information Set 推薦的附錄 D 中提供。

XML Information Set 推薦介紹了“綜合信息集 (Synthetic Infosets)”的概念。所謂綜合信息集是指除使用分析文本形式的 XML 文檔之外還用其他方法創(chuàng)建的信息集。綜合信息集為使用 XML 技術(shù)處理非 XML 數(shù)據(jù)奠定了基礎(chǔ),當(dāng)然前提是此類數(shù)據(jù)可以映射到 XML 信息集。處理綜合信息集的一個示例是 ObjectXPathNavigator,它允許用戶在 .NET Framework 中使用 Xpath 查詢對象,或者使用 XSLT 轉(zhuǎn)換對象。

架構(gòu)語言

XML 架構(gòu)語言用于描述 XML 文檔的結(jié)構(gòu)和內(nèi)容。例如,可以使用架構(gòu)指定文檔中包含一個或多個compact-disc元素,而每個compact-disc元素都包含子元素price、title和artist。在交換文檔的過程中,XML 架構(gòu)可以描述 XML 生成程序與使用程序之間的約定,因為它描述了這二者之間的有效 XML 消息的組成。雖然存在大量用于 XML 的架構(gòu)語言,從 DTD 到 XDR,但目前最權(quán)威的是 W3C XML 架構(gòu)定義語言,通常簡稱為 XSD。

XSD 在 XML 架構(gòu)語言中是獨一無二的,因為它最先嘗試擴展 XML 架構(gòu)的作用,使之不再局限于僅用來描述兩個實體交換文檔時的約定。XSD 引入了“后架構(gòu)驗證信息集 (Post Schema Validation Infoset,PSVI)”的概念。一個完整的 XSD 處理器接受 XML 信息集作為輸入,并在驗證時將其轉(zhuǎn)換為后架構(gòu)驗證信息集 (PSVI)。PSVI 是初始的輸入 XML 信息集,帶有添加的新信息項和添加到現(xiàn)有信息項中的新屬性。W3C XML Schema 推薦列出了后架構(gòu)驗證的信息集的組成要素。

類型注釋是 PSVI 組成要素中很重要的一類。元素和屬性需進行嚴格的類型定義,并具有與之相關(guān)的數(shù)據(jù)類型信息。經(jīng)過嚴格類型定義的 XML 有很多用途,可以使用 .NET Framework 的 XmlSerializer 等技術(shù)將其映射到對象,可以使用 SQLXML 和 .NET Framework 的 DataSet 技術(shù)將其映射到關(guān)系表格,或者使用利用了嚴格類型機制的 XML 查詢語言,如 XPath 2.0 和 XQuery 對其進行處理。

以下示例是一個架構(gòu)片段,描述了 XML 文檔剖析 一節(jié)中示例文檔的items元素。

以下為引用的內(nèi)容:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="items">
<xs:complexType>
<xs:sequence>
<xs:element ref="compact-disc" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="compact-disc">
<xs:complexType>
<xs:sequence>
<xs:element name="price" type="xs:decimal" />
<xs:element name="artist" type="xs:string" />
<xs:element name="title" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

基于樹模型的 API

樹模型 API 將 XML 文檔呈現(xiàn)為由節(jié)點組成的樹,這個樹通�?梢粤⒓醇虞d到內(nèi)存中。最常用的 XML 樹模型 API 是 W3C 文檔對象模型 (DOM)。DOM 支持以編程方式讀取、處理和修改 XML 文檔。

以下示例使用 .NET Framework 中的 XMLDocument 類獲取items元素中第一個compact-disc的藝術(shù)家姓名和標(biāo)題。

以下為引用的內(nèi)容:

using System;
using System.XML;

public class Test{

public static void Main(string[] args){

XmlDocument doc = new XMLDocument();
doc.Load("test.XML");

XmlElement firstCD = (XMLElement) doc.DocumentElement.FirstChild;
XMLElement artist =
(XMLElement) firstCD.GetElementsByTagName("artist")[0];
XMLElement title =
(XMLElement) firstCD.GetElementsByTagName("title")[0]

Console.WriteLine("Artist={0}, Title={1}", artist.InnerText, title.InnerText);
}
}

基于游標(biāo)的 API

XML 游標(biāo) API 就像在 XML 文檔中移動的鏡頭,對準(zhǔn)被定向的文檔的各個方面。.NET Framework 中的 XPathNavigator 類就是一個 XML 游標(biāo) API。XML 游標(biāo) API 與樹模型 API 相比,具有不必將整個文檔加載到內(nèi)存中的優(yōu)勢,這樣便于對 XML 生成程序中按需生成文檔的部分進行優(yōu)化。

以下示例使用 .NET Framework 中的 XPathNavigator 類獲取items元素中第一個compact-disc的藝術(shù)家姓名和標(biāo)題。

以下為引用的內(nèi)容:

using System;
using System.XML;
using System.XML.XPath;

public class Test{

public static void Main(string[] args){

XmlDocument doc = new XMLDocument();
doc.Load("test.XML");

XPathNavigator nav = doc.CreateNavigator();

nav.MoveToFirstChild(); //從根節(jié)點移至文檔元素 (items)
nav.MoveToFirstChild(); //從 items 元素移至第一個 compact-disc 元素

//從 compact-disc 元素移至 artist 元素
nav.MoveToFirstChild();
nav.MoveToNext();
string artist = nav.value;

//從 artist 元素移至 title 元素
nav.MoveToNext();
string title = nav.value;

Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}

流式 API

使用處理 XML 的流式 API 時,用戶只需在內(nèi)存中存儲要處理的當(dāng)前節(jié)點的上下文,即可處理 XML 文檔。此類 API 可以處理大型的 XML 文件,而不會占用龐大的內(nèi)容空間。用于 XML 處理的流式 API 主要有兩種類型:基于推進的 XML 分析器和基于拉出的 XML 分析器。

基于推進的分析器(如 SAX)的工作方式是在 XML 數(shù)據(jù)流中移動,并在遇到 XML 節(jié)點時將事件“推進”到已注冊的事件處理程序(回調(diào)方法)�;诶龅姆治銎鳎ㄈ� .NET Framework 中的 XmlReader 類)則在 XML 數(shù)據(jù)流中用作只向前的游標(biāo)。

以下示例使用 .NET Framework 中的 XMLReader 類獲取items元素中第一個compact-disc的藝術(shù)家姓名和標(biāo)題。

以下為引用的內(nèi)容:

using System;
using System.XML;

public class Test{

public static void Main(string[] args){

string artist = null, title = null;
XmlTextReader reader = new XmlTextReader("test.XML");

reader.MoveToContent(); //move from root node to document element (items)

/* 保持讀取,直至獲得第一個 <artist> 元素 */
while(reader.Read()){

if((reader.NodeType == XMLNodeType.Element) && reader.Name.Equals("artist")){

artist = reader.ReadElementString();
title = reader.ReadElementString();
break;
}
}
Console.WriteLine("Artist={0}, Title={1}", artist, title);
}
}

分享:利用XML開發(fā)留言板簡單的例子
XML是一種基于文本格式的元標(biāo)記語言,它注重對數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)意義的描述,實現(xiàn)了數(shù)據(jù)內(nèi)容和顯示樣式的分離(xml xsl),而且是與平臺無關(guān)的。 由于XML注重數(shù)據(jù)內(nèi)容的描述,因而,對于數(shù)據(jù)的檢

來源:模板無憂//所屬分類:Xml教程/更新時間:2008-08-22
相關(guān)Xml教程