主頁 > 知識庫 > Xml簡介_動力節(jié)點Java學(xué)院整理

Xml簡介_動力節(jié)點Java學(xué)院整理

熱門標(biāo)簽:東營電銷 400電話辦理包年 南寧網(wǎng)絡(luò)外呼系統(tǒng)運營商 本地電話機器人 高德地圖地圖標(biāo)注服務(wù)中心 r語言數(shù)據(jù)可視化地圖標(biāo)注 微信地圖標(biāo)注合并了 隨州外呼調(diào)研系統(tǒng) 如何修改多個百度地圖標(biāo)注

XML(簡介)

       XML(可擴展標(biāo)記語言)在 20 世紀(jì) 90 年代后期登上舞臺后,就一直是眾多活動和狂熱思索的焦點。XML 只是基于普通文本,但卻提供了幾乎可以在任何兩個應(yīng)用程序間共享數(shù)據(jù)的方式。

       雖然 XML 在概念上很簡單,但對 XML 的處理卻通常很煩瑣(需要編寫大量重復(fù)性的代碼)和復(fù)雜(很多容易被忽視的細節(jié)導(dǎo)致錯誤)。     

什么時候使用 XML?

       什么時候在Web 應(yīng)用程序中使用 XML?

  • 你需要處理已經(jīng)保存在 XML 中的數(shù)據(jù)時。
  • 你希望用 XML 保存數(shù)據(jù)并為將來可能的整合做準(zhǔn)備時。(XML 在應(yīng)用程序整合的場景中最有意義)
  • 你希望使用依賴于 XML 的技術(shù)時。(Web 服務(wù)使用各種建立在 XML 上的標(biāo)準(zhǔn))
  • 注解:
  •        必須理解的一個重要概念是,存儲數(shù)據(jù)時必須決定兩件事情:
  • 確定數(shù)據(jù)結(jié)構(gòu)化的方式(邏輯格式)
  • 確定數(shù)據(jù)保存的方式(物理存儲)

       XML 是格式的選擇而不是存儲的選擇。也就是說,即使你決定用 XML 保存數(shù)據(jù),你還要決定是保存到數(shù)據(jù)庫字段里,還是要插入到一個文件里,或者只是以字符串或其他對象的形式保存在內(nèi)存中。

XML 簡介

       XML 規(guī)范是由 W3C(World Wide Web Consortium)定義的一組指南,用于以純文本的形式描述結(jié)構(gòu)化數(shù)據(jù),一種基于尖括號間標(biāo)簽的標(biāo)記語言。

       XML 沒有一組固定的標(biāo)簽。相反,XML 是一種可用于創(chuàng)建其他標(biāo)記語言的元語言。

       下面的文檔顯示一個保存產(chǎn)品類別的自定義 XML 格式:

?xml version="1.0" encoding="utf-8" ?>
productCatalog>
 catalogName>Acme Fall 2015 Catalog/catalogName>
 expiryDate>2015-01-01/expiryDate>
 products>
  product id="1001">
   productName>Magic Ring/productName>
   productPrice>342.10/productPrice>
   inStock>true/inStock>
  /product>
  product id="1002">
   productName>Flying Carpet/productName>
   productPrice>982.99/productPrice>
   inStock>true/inStock>
  /product>
 /products>
/productCatalog>

       標(biāo)簽可以自由使用最能描述你的數(shù)據(jù)的任意名稱,正是這種靈活性使得 XML 非常成功。當(dāng)然,靈活性也會有缺點。不同公司完全可用不同的標(biāo)簽名來描述相似的數(shù)據(jù),盡管所有應(yīng)用程序都能夠解析 XML 數(shù)據(jù),但數(shù)據(jù)的寫入者和讀取者需要對標(biāo)簽和結(jié)構(gòu)達成共識,才能使讀取者可用解釋數(shù)據(jù)并抽取有意義的信息。 

XML 的優(yōu)點

       今天,XML 比過去任何一天都更為有用。現(xiàn)代應(yīng)用程序使用 XML 的好處有以下幾點:

  • 適應(yīng)性。XML 無處不在,無論什么時候需要共享數(shù)據(jù),XML 都會成為首選目標(biāo)。
  • 擴展性和靈活性。XML 不會強加任何數(shù)據(jù)語義的規(guī)則,適用于任意數(shù)據(jù)的類型并且實現(xiàn)的代價很低。
  • 相關(guān)標(biāo)準(zhǔn)和工具。XML 成功的另一個原因在于創(chuàng)建和處理 XML 的工具(解析器)和相關(guān)標(biāo)準(zhǔn)(XML架構(gòu)、XPath、XSLT)。這樣幾乎每種語言的開發(fā)者都有現(xiàn)成的組件用于閱讀 XML,按某種規(guī)則(被稱作架構(gòu))驗證 XML 的有效性,將 XML 轉(zhuǎn)換格式等。 

格式良好的 XML

       XML 是一個非常嚴(yán)格的標(biāo)準(zhǔn),這種嚴(yán)格性是用于保留廣泛的兼容性的。(臭名昭著的 HTML 語言就是在沒有這種嚴(yán)格性標(biāo)準(zhǔn)下的產(chǎn)物)

       所有的 XML 解析器都會執(zhí)行一些基本的質(zhì)量檢查。如果一個 XML 文檔不能滿足所有標(biāo)準(zhǔn),它就會被徹底拒絕。否則,它就被認(rèn)為是格式良好的。格式良好的 XML 未必就是正確的 XML ,例如含有錯誤數(shù)據(jù),但 XML 解析器能夠解析它。

       XML 文檔必須滿足下面這些條件才能被認(rèn)為是格式良好的:

  • 每個開始標(biāo)簽必須有一個對應(yīng)的結(jié)束標(biāo)簽
  • 空元素必須以“/>”結(jié)束
  • 元素可以嵌套但不能交錯
  • XML 是嚴(yán)格區(qū)分大小寫的,因此 FirstName> 和 /firstName > 不能配對
  • 一個元素不能有兩個或更多的同名特性,但是可以嵌套多個同名的元素
  • 一個文檔只可以有一個根元素
  • 所有特性在值的前后都要有引號
  • 注釋不能放入標(biāo)簽中(它們包含在 !-- 和  --> 標(biāo)記中) 

XML 命名空間

       隨著 XML 標(biāo)準(zhǔn)的成長,已創(chuàng)建了數(shù)十種 XML 標(biāo)記語言(通常叫做 XML 語法)。其中很多屬于特定的行業(yè)、流程和信息類型。如果你需要同時組合兩個具有相同名稱元素的 XML 語法,會發(fā)生什么呢?另一個更典型的問題是如何區(qū)分它們?

       解決辦法在于 XML 命名空間標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)的核心思想是所有的 XML 標(biāo)記語言都擁有能夠唯一區(qū)分相關(guān)元素的命名空間。簡單的說,命名空間可以在整合時消除同名元素的歧義。

       所有的 XML 命名空間都使用 URI(Universal Resource Identifiers,統(tǒng)一資源標(biāo)識符),一般看起來和網(wǎng)頁的 URL 相似。例如,http://www.mycompany.com/mystandard 是一種典型的命名空間,但這不是必要的(也不應(yīng)該被假設(shè)),命名空間可以是任意文本序列,標(biāo)準(zhǔn)是為了確保它的唯一性。

       要指定某個元素屬于特定的命名空間,只需在開始標(biāo)簽中加入 xmlns(XML Name Space)特性表明要使用的命名空間即可。例如,下面這個元素是http://mycompany/OrderML 命名空間的一部分。

order xmlns="http://mycompany/OrderML">/order>
    你一定會厭倦在所有元素上加入這個特性的煩瑣操作,幸好,如果像下面這樣加入命名空間,它會成為所有子元素默認(rèn)的命名空間:
product xmlns="http://mycompany/OrderML">
 productName>Flying Carpet/productName>
 productPrice>982.99/productPrice>
 inStock>true/inStock>
/product>
    你還可以自定義命名空間前綴,在 xmlns 特性中插入一個冒號和一個你想用作前綴的字符:
ord:order xmlns:ord="http://mycompany/OrderML"
      xmlns:cli="http://mycompany/ClientML">
 cli:client>
  cli:firstName>.../cli:firstName>
  cli:lastName>.../cli:lastName>
 /cli:client>
 ord:orderItem>.../ord:orderItem>
 ord:orderItem>.../ord:orderItem>
/ord:order>

XML 架構(gòu)

       XML 的靈活性也帶來了一些問題。世界各地的開發(fā)人員都使用你的 XML 格式,怎樣才能保證所有人都遵守規(guī)則?

       解決辦法是創(chuàng)建一個格式文檔,它定義你的自定義標(biāo)記語言的規(guī)則,它被稱為架構(gòu)。這些規(guī)則不會包括語法細節(jié)(那是 XML 標(biāo)準(zhǔn)所要規(guī)定的),架構(gòu)文檔需要定義的是符合你的數(shù)據(jù)類型的邏輯規(guī)則,它包括以下幾項:

  • 文檔詞匯。它定義了哪些元素或特性的名字可以出現(xiàn)在你的 XML 文檔中。
  • 文檔結(jié)構(gòu)。它定義了標(biāo)簽放在哪兒,可以指定標(biāo)簽之間的順序,還可以指定某個元素可以出現(xiàn)的次數(shù)。
  • 支持的數(shù)據(jù)類型。可以定義數(shù)據(jù)是文本,或者必須是可以解析的數(shù)值數(shù)據(jù)、日期信息等。
  • 允許的數(shù)據(jù)范圍??蓪?shù)值限制在范圍內(nèi),文本限定在特定長度內(nèi),強迫正則表達式模式匹配,或者限制僅可以是某些特定的值。

       下面的這個 XML 架構(gòu)定義了前面所示的產(chǎn)品類別規(guī)則:

?xml version="1.0" encoding="utf-8"?>
xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 xsd:element name="productCatalog">
  xsd:complexType>
   xsd:sequence>
    xsd:element name="CatalogName" type="xsd:string" />
    xsd:element name="expiryDate" type="xsd:date" />
    xsd:element name="products">
     xsd:complexType>
      xsd:sequence>
       xsd:element name="product" type="productType" maxOccurs="unbounded" />
      /xsd:sequence>
     /xsd:complexType>
    /xsd:element>
   /xsd:sequence>
  /xsd:complexType>
 /xsd:element>
 xsd:complexType name="productType">
  xsd:sequence>
   xsd:element name="productName" type="xsd:string" />
   xsd:element name="productPrice" type="xsd:decimal" />
   xsd:element name ="inStock" type="xsd:boolean" />
  /xsd:sequence>
  xsd:attribute name="id" type="xsd:integer" use="required" />
 /xsd:complexType>
/xsd:schema>
  • 所有的架構(gòu)文檔都是以根元素 schema> 開頭的 XML 文檔
  • 所有可用的元素都已經(jīng)在 XML 架構(gòu)空間定義了(http://www.w3.org/2001/XMLSchema)
  • 你的架構(gòu)文檔必須使用正確的命名空間名(前綴一般是 xsd 或 xs ,你也可以自定義)
  • 在 schema> 元素內(nèi),有兩種類型的定義
  • element> 定義目標(biāo)文檔必須遵循的結(jié)構(gòu)
  • complexType> 定義文檔結(jié)構(gòu)較小的數(shù)據(jù)結(jié)構(gòu)
  • element>標(biāo)簽是架構(gòu)的核心,同時它也是所有驗證的起點

       在這個示例中,element>標(biāo)簽確定產(chǎn)品類別必須以一個叫做productCatalog>的根元素開始。productCatalog>元素內(nèi)部是一個由3個元素組成的序列。第一個是catalogName>,它包含普通文本;第二個是expiryDate>,它包含符合日期呈現(xiàn)規(guī)則的文本;第三個是products>,它包含product>元素的列表。

       每個product>元素都是一個復(fù)雜的類型,因此文檔后面又使用complexType>進行了定義。這個復(fù)雜類型(名為productType>)由含有產(chǎn)品信息的 3 個元素所組成的序列構(gòu)成。這些元素分別保存文本(productName>)、十進制數(shù)(productPrice>)、布爾值(inStock>)。這個復(fù)雜類型還包括一個必須的特性 id。

您可能感興趣的文章:
  • 簡介Objective-C解析XML與JSON數(shù)據(jù)格式的方法
  • 簡介C#讀取XML的兩種方式
  • XMLHTTPRequest的屬性和方法簡介
  • [轉(zhuǎn)]XMLHTTPRequest的屬性和方法簡介
  • 氣象 XML 數(shù)據(jù)源應(yīng)用程序開發(fā)指南-簡介
  • XML簡介

標(biāo)簽:宿遷 益陽 果洛 寧夏 拉薩 西雙版納 德州 黃石

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Xml簡介_動力節(jié)點Java學(xué)院整理》,本文關(guān)鍵詞  Xml,簡介,動力,節(jié)點,Java,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Xml簡介_動力節(jié)點Java學(xué)院整理》相關(guān)的同類信息!
  • 本頁收集關(guān)于Xml簡介_動力節(jié)點Java學(xué)院整理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章