Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 精品福利一区二区在线观看,午夜视频网站,女人一级毛片

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript中裝載XML文檔

          E和FierFox瀏覽器對(duì)于這裝載同域的XML文件和裝載XML字符串這兩種情況,分別有各自的處理方式。IE的解析器支持XML文件和XML字符串的加載,而火狐瀏覽器使用單獨(dú)的解析器把XML載入內(nèi)存,然后轉(zhuǎn)換為可通過JS訪問的XML DOM對(duì)象。

          以下是js代碼:

          /* 
           * 封裝IE和Firefox類瀏覽器中裝載同域XML或XML字符串的方法,
           * @param flag true表示裝載XML的文件,false表示裝載XML的字符串
           * @param xmldoc flag為true表示XML文件的路徑,flag為false表示XML字符串
           */
           
          function loadXML(flag,xmldoc){
           if(window.activeXObject) {
           //IE瀏覽器
           //創(chuàng)建空的XML對(duì)象
           var activexName = ["MSXML2.DOMDdcument","Miscrosoft.XmlDom"];
           var xmlObj;
           for(var i = 0; i < actviexName.length;i++){
           try{
           xmlObj = new ActiveXObject(activeName[i]);
           break;
           }catch(e){
           
           }
           }
           if(xmlObj){
           //同步方式裝載XML數(shù)據(jù),確保在文檔完全加載之前解析器不會(huì)繼續(xù)腳本的執(zhí)行
           xmlObj.async = false;
           if(flag){
           //load用于加載文件,loadXML用于加載字符串
           //裝載XML文件
           xmlObj.load(xmldoc);
           }else{
           //裝載XML的字符串
           xmlObj.loadXML(xmldoc);
           }
           //返回根節(jié)點(diǎn)
           return xmlObj;
           //返回根元素節(jié)點(diǎn)
           return xmlObj.documentElement;
           }else{
           alert("裝載XML文檔的對(duì)象創(chuàng)建失敗");
           return null;
           }
           }else if(document.implementation.creatDocument){
           //針對(duì)Firefox類瀏覽器
           var xmlObj;
           if(flag){
           //裝載XML文件
           //先創(chuàng)建一個(gè)空的xml dom對(duì)象
           xmlObj = document.implementation.creatDocument("","",null);
           if(xmlObj){
           //同步方式進(jìn)行裝載
           xmlObj.async = false;
           xmlObj.load(xmldoc);
           return xmlObj.documentElement;
           }else{
           alert("裝載XML文檔的對(duì)象創(chuàng)建失敗");
           return null;
           }
           }else{
           //裝載XML的字符串
           //創(chuàng)建一個(gè)dom解析器
           xmlObj = new DOMParser();
           //把xml字符串解析成要返回的dom對(duì)象
           var docRoot = xmlObj.parerFromString(xmldoc,"test/xml");
           return docRoot.documentElement;
           }
           }
           alert("裝載XML文檔的對(duì)象創(chuàng)建失敗");
           return null;
          }
          

          html代碼

          <html>
           <head>
           <title>TODO supply a title</title>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <script type="text/javascript" src="load.js"></script>
           <script type="text/javascript">
           function test(){
           //裝載同域的XML文件
           var domxml1 = loadXML(true,"test.xml");
           //裝載XML字符串
           var domxml2 = loadXML(true,"<xml>123</xml>");
           alert("");
           }
           </script>
           </head>
           <body>
           <input type="button" value="test" onclick="test()"/>
           </body>
          </html>
          

          XML頁(yè)內(nèi)容

          <?xml version="1.0" encoding="UTF-8"?>
          <root>
           木子松就是我,我就是木子松
          </root>
          

          總結(jié)

          對(duì)于裝載同域的XML文件,IE瀏覽器和火狐類瀏覽器都是先創(chuàng)建一個(gè)空的XML文檔對(duì)象,然后用“xmlDoc.load(“**.xml”)”告知解析器加載名為**.xml的XML文檔

          對(duì)于裝載XML字符串,IE瀏覽器和裝載XML文件的方式一樣,利用微軟內(nèi)建的解析器加載XML字符串;而火狐類瀏覽器,則是通過"var parser = new DOMParser()"創(chuàng)建dom解析器,然后利用方法parserFromString()加載 XML字符串。另外DOMParser對(duì)象的load()方法可用于加載文件。

          跨域訪問處于安全方面的原因,現(xiàn)在的瀏覽器不允許跨域訪問。如果想跨域訪問,則必須把XML文件放到自己的服務(wù)器上,否則,xmlDoc.load()將產(chǎn)生錯(cuò)誤“Access is denied”。


          ML;
          是什么?
          Extensible Markup Languare 可擴(kuò)展標(biāo)記型語(yǔ)言

          為什么要有XML?
          1.HTML的標(biāo)簽是固定的,不可以改變,也不可以進(jìn)行一個(gè)···擴(kuò)展
          2.HTML語(yǔ)法松散

          作用;
          制作配置文件;如組件類。。。。。
          存儲(chǔ)數(shù)據(jù);存儲(chǔ)少量的數(shù)據(jù)

          ◆◆◆注;XML不是HTML的升級(jí)版,因?yàn)閼?yīng)用的領(lǐng)域不一樣。
          XML是描寫關(guān)系型的數(shù)據(jù)
          HTML是描述頁(yè)面的數(shù)據(jù)顯示效果

          --------------------------------------------XML和HTML的區(qū)別--------------------------------------------------------------------

          XML和HTML的區(qū)別;
          A、HTML是將數(shù)據(jù)和顯示的效果混合在一起,描述了數(shù)據(jù)的顯示效果,
          -----而且標(biāo)簽是固定,而且語(yǔ)法松散

          B、XML是將數(shù)據(jù)和顯示的效果是分離的,只是描述了數(shù)據(jù)之間的關(guān)系和存儲(chǔ)的格式,
          -----沒有描述數(shù)據(jù)的顯示效果,沒有一套具體的標(biāo)簽,只是一個(gè)規(guī)范。

          XML適用金融,科學(xué)等有關(guān)系型的領(lǐng)域

          XML的重點(diǎn)是;處理數(shù)據(jù),和數(shù)據(jù)結(jié)構(gòu)


          ◆注;引入外部CSS文件,對(duì)XML標(biāo)簽進(jìn)行一個(gè)修飾,
          <>xml-stylesheet tyep = "text/css" href = "">

          --------------------------------------------XML的特點(diǎn)--------------------------------------------------------------------

          XML特點(diǎn);
          1.語(yǔ)法嚴(yán)謹(jǐn),區(qū)分大小寫
          2.標(biāo)簽名可以是中文
          3.文件后綴是 .xml
          4.換行也是算一個(gè)元素
          5.可以自定義標(biāo)簽
          6.id不可以以數(shù)字開頭

          存儲(chǔ)數(shù)據(jù)的方式;
          * XML 存儲(chǔ)關(guān)系型的數(shù)據(jù)
          * properties 存儲(chǔ)key,value的數(shù)據(jù)
          * 文本 什么都可以存儲(chǔ)
          * 數(shù)據(jù)庫(kù)



          --------------------------------------------XML的語(yǔ)法--------------------------------------------------------------------




          XML語(yǔ)法;
          1.文檔聲明 Document declaration;
          版本 編碼集 是否與其他文件關(guān)聯(lián)
          <?xml vaersion = "1.0" encoding = "編碼集" standalone = "no默認(rèn)" ?>

          2.元素 Element;
          1.自定義標(biāo)簽;建議標(biāo)簽名全部小寫,保持與HTML的書寫習(xí)慣,
          因?yàn)槌霈F(xiàn)同名的大小寫不便于閱讀
          2.成對(duì)出現(xiàn)
          3.閉合標(biāo)簽和結(jié)束體標(biāo)簽
          4.符合邏輯嵌套

          3.屬性 Attribute;
          1.屬性名小寫,屬性也是可以自定義的,
          2.屬性值要使用 "" 或 '',id不可以以數(shù)字開頭
          3.多個(gè)屬性要使用 空格 隔開
          4.可以將屬性作為一個(gè)子標(biāo)簽,因?yàn)閄ML用途不是用于顯示頁(yè)面的

          4.注釋 Comment;
          1.<!-- --> 和HTML一樣
          2.注釋不可以嵌套

          5.CDATA;
          1.XML的轉(zhuǎn)義字符基本和HTML一致。
          2.如果需要轉(zhuǎn)義的字符太多了則可以使 CDATA
          3.CDATA可以將一段字符串原樣的輸出

          <![CDATA[字符串]]>

          6.處理指令;
          1.處理指令時(shí)告知解析引擎是要如何處理文檔的。
          2.處理指令必須使用 <? ?>

          <?xml-stylesheet type = "text/css" href = "路徑">

          ◆注;
          1.XML必須要有一個(gè)根節(jié)點(diǎn)
          2.XML不會(huì)在頁(yè)面顯示
          3.縮進(jìn)寫法適合閱讀

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 文件結(jié)構(gòu)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          ◆◆◆注; XML文檔必須要有一個(gè)根節(jié)點(diǎn)◆◆◆

          XML文件結(jié)構(gòu);
          Node
          |--- Element
          |--- Attr
          |--- Comment
          |--- Text
          |--- Document


          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 解析技術(shù)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


          xml解析;
          為什么要有?
          因?yàn)閄ML主要是用于存儲(chǔ)數(shù)據(jù),做配置文件.......
          那么XML的數(shù)據(jù)的···取出···可以通過解析技術(shù)可以實(shí)現(xiàn).....

          而讀取XML文件;
          1.IO ---- 讀取出來的數(shù)據(jù)不是理想的數(shù)據(jù)。
          2.DOM解析 ---- DOM4J 是一個(gè)開源的解析技術(shù)
          3.SAX解析 ---- SAX 是SUN公司定義的,比較規(guī)范,SAX里面也是有使用了DOM4J的技術(shù)

          解析技術(shù);
          1.DOM4J 是一個(gè)開源組織的
          2.JAXP 是SUN公司定義的
          |-- DOM
          |-- SAX


          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓DOM—— 解析技術(shù)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          DOM解析;
          特點(diǎn);1.是一次性裝載這個(gè)文件到內(nèi)存中,不利于大文件存取操作,
          2.適合增刪改查,因?yàn)橐淮问钦麄€(gè)文件加載,無需在到硬盤對(duì)文件中的內(nèi)容一個(gè)一個(gè)去查找
          3.在內(nèi)存中是一棵倒掛的樹
          4.DOM是解析XML的底層接口之一
          5.是W3C定義的
          6.DOM是一個(gè)規(guī)范,而DOM4J是一個(gè)實(shí)現(xiàn)了這個(gè)規(guī)范的解析技術(shù)

          DOM4J;
          1.是DOM解析的一個(gè)實(shí)現(xiàn)解析技術(shù)(如同實(shí)現(xiàn)類)
          2.特點(diǎn)和DOM一樣,也是一棵倒立的樹型形狀。
          3.不是W3C定義的,是一個(gè)開源團(tuán)隊(duì)發(fā)布的

          DOM4J;也是一個(gè)組件,而這個(gè)組件也是需要下載的,

          -----------------------------------------------DOM4J獲取XML文件的方式--------------------------------------------------------------------

          ◆◆◆注;注意導(dǎo)包的路徑。

          DOM4J獲取文件的三種方式;
          1.通過解析器的方法傳入一個(gè)絕對(duì)路徑

          a.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          b.調(diào)用解析器的read方法獲取XML文檔,使用文檔對(duì)象接收

          ★ Document doc = sr.read("絕對(duì)路徑");

          2.通過解析器的方法傳入一個(gè)相對(duì)路徑

          a.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          b.調(diào)用解析器的read()方法,獲取到XML文檔,使用文檔對(duì)象接收

          ★ Document doc = sr.read("相對(duì)路徑");

          3.通過類的getResourceAsStream("/文件名")方法

          a.通過運(yùn)行時(shí)類的對(duì)象的getResourceAsStream()的方法
          ---獲取到這個(gè)XML文檔的流

          ★InputStream is = 類名.class.getResourceStream("/文件名");

          b.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          c.調(diào)用解析器的read()方法傳入獲取到的XML文件流,使用文檔對(duì)象接收

          ★ Document doc = sr.read(is);

          ------------------------------------------DOM4J獲取XML文件的元素方法--------------------------------------------------------------------

          ◆◆◆注;必須要先獲取到根節(jié)點(diǎn),在根據(jù)根節(jié)點(diǎn)獲取到其他節(jié)點(diǎn) ◆◆◆

          DOM4J獲取元素方法; --- 使用Element Object調(diào)用

          1.getRootElement() 獲取到根節(jié)點(diǎn)

          2.elements(寫/沒寫) 只能寫子標(biāo)簽,不可以寫孫標(biāo)簽
          沒寫;獲取到所有的子標(biāo)簽標(biāo)簽 返回的是一個(gè)集合
          寫了;獲取到指定標(biāo)簽名的所有標(biāo)簽

          3.getName(); 獲取到標(biāo)簽名
          4.elementText() 獲取到標(biāo)簽的內(nèi)容
          5.element() 獲取到指定標(biāo)簽
          6.elementById() 獲取到指定的Id標(biāo)簽
          7.elementIterator() 獲取到標(biāo)簽迭代器
          8.getQName() 獲取到標(biāo)簽名

          獲取屬性的方法;----使用 Element Object調(diào)用

          1.attributeValue() 獲取到指定的屬性的值
          2.attirbutes() 獲取到所有的屬性

          添加的方法;----使用 Element Object 調(diào)用

          1.addElement() 添加元素
          2.addAttribute() 添加屬性
          3.addCDATA() 添加CDATA
          4.addText() 添加標(biāo)簽內(nèi)容

          直接刪除元素方法;使用獲取到的元素對(duì)象,
          ◆ 調(diào)用detach()方法可以刪除這個(gè)元素和這個(gè)元素的所有子元素。

          如;element.detach()

          ------------------------------------------DOM4J刷新文件--------------------------------------------------------------------

          DOM4J刷新文件;
          1.聲明文件內(nèi)容的寫入格式。
          a.縮進(jìn)格式;
          OutputFormat of = OutputFormat.createPrettyPrint();

          b.行內(nèi)格式;
          OutputFormat of = OutputFormat.createCompactFormat();

          2.創(chuàng)建寫入器
          XMLWriter writer = new XMLWriter("FileStream_Path","OutputFormat_Obj");

          3.調(diào)用寫入器的方法寫入重寫寫入文件
          writer.write("Document_Obj");

          ◆注;
          1.將獲取到的XML文檔對(duì)象的內(nèi)容轉(zhuǎn)換成一個(gè)字符串
          String Document.asXML();

          2.將字符串轉(zhuǎn)換成一個(gè)XML文檔對(duì)象
          Document.DocumentHanper.parseText("String_Obj");

          ------------------------------------------DOM4J創(chuàng)建 --> 寫入過程--------------------------------------------------------------------

          ◆◆◆注意導(dǎo)包◆◆◆

          1.創(chuàng)建解析器對(duì)象;
          SAXReader reader = new SAXReader()

          2.調(diào)用解析器方法獲取到XML文檔;
          Document doc = reader.read("String_Path");

          3.獲取到根路徑;
          Element doc.getRootElement();

          ---4.1;將獲取到的文檔對(duì)象轉(zhuǎn)換成字符串
          String doc.asXML();

          ---4.2;將字符串解析成一個(gè)XML文檔對(duì)象
          Document DocumnetHanper.parseText("String");

          5.規(guī)定寫入XML文件的格式;
          1.OutputFormat of = OutputFormat.createPattryPrint(); --- 縮進(jìn)格式
          2.OutputFormat of = OutputFormat.createCompactFormat(); --- 行內(nèi)格式

          6.創(chuàng)建寫入器;
          XMLWriter writer = new XMLWriter("FileStream_Path",OutputFormat);

          7.調(diào)用寫入器的寫入XML文件的方法;
          writer.wirte(Document);

          8.關(guān)閉流;
          writer.close();

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓Xpath—— 查詢表達(dá)式↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          Xpath;
          為什么要有?
          在DOM4J中加載文件時(shí),直接加載整個(gè)文件到內(nèi)存中的,不便于獲取某一個(gè)指定的節(jié)點(diǎn)。

          什么是Xpath?
          1、是一個(gè)查詢表達(dá)式語(yǔ)言,也是一個(gè)開源的語(yǔ)言
          2、在DOM4J中融合了這個(gè)Xpath這個(gè)查詢表達(dá)式語(yǔ)言
          3、這個(gè)語(yǔ)言也是一個(gè)組件來的,但是在DOM4J組件中已經(jīng)附帶了
          dom4J --- lib --- jaxen-1.1-beta-6.jar

          作用;
          可以通過Xpath表達(dá)式快速定位到某一個(gè)XML文件的節(jié)點(diǎn)。

          ------------------------------------------Xpath—— 表達(dá)式符號(hào) --------------------------------------------------------------------

          表達(dá)式符號(hào);
          //x 相對(duì)定位到某節(jié)點(diǎn)
          /x 絕對(duì)定位絕對(duì)定位到某一個(gè)節(jié)點(diǎn)
          /* 是所有節(jié)點(diǎn)
          [num] 第N個(gè)節(jié)點(diǎn)
          [@x] 選中到某一個(gè)屬性
          normalize-span 去空格
          [text()] 獲取到內(nèi)容

          ------------------------------------------Xpath—— 使用 --------------------------------------------------------------------

          Xpath的使用;
          DOM4J的selectNodes("表達(dá)式"); 方法
          DOM4J的selectSingleNode("表達(dá)式"); 方法

          Document .selectNodes() ------ 是返回所有節(jié)點(diǎn)的集合
          Document .selectSingleNode("表達(dá)式") ----- 返回某一個(gè)具體的節(jié)點(diǎn)

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP —— 解析技術(shù)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          JAXP解析技術(shù);
          是Sun公司開發(fā)的,是XML文檔解析技術(shù)的一個(gè)集合統(tǒng)稱。

          包含;
          DOM解析
          一次性讀取整個(gè)文件到內(nèi)存中。

          SAX解析
          讀取一行,解析一行,處理一行。

          這2項(xiàng)解析技術(shù)都是由SUN公司制定的,較規(guī)范

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——SAX —— 解析技術(shù)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          SAX解析技術(shù);
          為什么要有?
          1.DOM4J不適合大文件的讀取,因?yàn)橐淮涡约虞d整個(gè)文件。

          是什么?
          1.Simple API For XML 簡(jiǎn)單的解析XML文檔API,是由SUN公司定義的一個(gè)解析技術(shù),較規(guī)范。
          2.也是融合了DOM4J的部分技術(shù)。

          作用;
          用于解析XML文檔的一個(gè)解析技術(shù)

          特點(diǎn);
          一次讀取一行,解析一行,處理一行。

          適合大文件的存取,不適合增刪改查。

          ◆注;由于是SUN公司開發(fā)的,而在Eclipse或MyEclipse中已經(jīng)有了組件。

          ◆◆◆◆◆注;SAX解析主要是用于查詢,一般都不使用寫入操作,因?yàn)橐话愕腦ML文件都不會(huì)太大

          -----------------------------------------SAX獲取XML文件的方式--------------------------------------------------------------------


          SAX獲取XML文件的方式;
          只有 2 種,傳入的字符串是···絕對(duì)路徑···或···相對(duì)路徑···

          -----------------------------------------SAX獲取XML文件的流程 --------------------------------------------------------------------

          SAX獲取XML文件的流程;
          因?yàn)槭荢UN公司定義的所以也較規(guī)范,也定義了獲取XML文件的流程

          1.獲取到解析器工廠對(duì)象
          SAXParserFactory spf = SAXParserFactory.newInstance();

          2.通過解析器工廠對(duì)象獲取到具體的解析器對(duì)象
          SAXParser sp = spf.newSAXParser();

          3.通過具體的解析器對(duì)象,獲取到讀取器
          XMLReader reader = sp.getXMLReader()

          4.通過調(diào)用讀取器的setContentHandler(obj)方法設(shè)置事件處理
          reader.setContentHandler(obj);

          5.調(diào)用讀取器的解析方法,解析XML文件
          reader.parse("絕對(duì)路徑/相對(duì)路徑");


          ◆注;具體的事件處理在繼承事件處理接口·下·的具體實(shí)現(xiàn)類,的類中定義

          事件處理;
          在SAX中引入了一個(gè)事件處理的概念,是用于對(duì)文件的內(nèi)容進(jìn)行的處理。

          1.在調(diào)用解析文件parse()的方法,時(shí)會(huì)觸發(fā)事件處理方法中的對(duì)象的···主要三個(gè)方法···

          2.而事件處理ContenHandler是一個(gè)接口,
          如果實(shí)現(xiàn)這個(gè)了接口則需要實(shí)現(xiàn)這個(gè)接口的所有方法
          所以可以實(shí)現(xiàn)這個(gè)接口的具體的實(shí)現(xiàn)類。

          主要三個(gè)方法;
          startElement(String uri, String localName, String qName,
          Attributes attributes) ----- 獲取到開始標(biāo)簽

          characters(char[] ch, int start, int length) ----- 獲取到標(biāo)簽內(nèi)容

          endElement(String uri, String localName, String qName)
          ----- 獲取到結(jié)束標(biāo)簽

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——DOM —— 解析技術(shù)↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          JAXP-DOM解析技術(shù);
          為什么要有?
          1.在SUN公司定義了一個(gè)SAX解析,而這個(gè)解析的特點(diǎn)是,每次讀取一行,
          而不便于增刪改。。。。。
          2.而不用DOM4J,因?yàn)槿绻鞘褂肧UN公司定義的標(biāo)準(zhǔn)較規(guī)范,

          3.使得代碼便于閱讀,因?yàn)樵陂喿x是不必查看是使用什么技術(shù)。。。。。

          4.在未來的開發(fā)中統(tǒng)一使用SUN公司的技術(shù),可以使得兼容性問題的風(fēng)險(xiǎn)降低。。

          是什么?
          JAXP-DOM解析技術(shù)是由SUN公司開發(fā)的,里面融合了DOM4J的部分技術(shù)

          作用;
          可以用于解析XML文檔。

          特點(diǎn);
          1.一次性加載整個(gè)XML文檔到內(nèi)存中。
          2.不適合大的文檔存取,適合增刪改查
          3.也是一個(gè)倒立的樹型結(jié)構(gòu)。

          4.也是遵循DOM規(guī)范的。

          ------------------------------ JAXP——DOM —— 創(chuàng)建->獲取XML文檔流程 -------------------------------------------------------------------

          Jaxp-DOM創(chuàng)建流程;
          1.獲取到Jaxp_DOM解析工廠對(duì)象
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          2.通過解析工廠對(duì)象獲取到具體的解析器對(duì)象
          DomcumentBuilder db = dbf.newDocumentBuilder();

          3.通過解析器的解析XML文檔的方法獲取到XML文檔
          Document doc = db.parse("絕對(duì)路徑/相對(duì)路徑")

          操作文檔元素的方法;
          參考;Java_API ---> Document對(duì)象,中的方法
          和DOM4J/SAX類似

          ◆◆◆注;不可以使用通過類名獲取到文件輸入流對(duì)象

          Node n = doc.getElementsByTagName("節(jié)點(diǎn)名")[num];

          -------------------------------- JAXP——DOM —— 創(chuàng)建->寫入XML文檔流程 --------------------------------------------------------------------

          JAXP-DOM創(chuàng)建-寫入;
          1.獲取到JAXP-DOM解析工廠接口對(duì)象
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          2.通過解析工廠的對(duì)象獲取到具體的解析器對(duì)象
          DocumentBuilder bd = dbf.newDocumentBuilder();

          3.使用解析器對(duì)象的parse()方法,獲取到XML文檔的對(duì)象
          Document doc = bd.parse(絕對(duì)路徑/相對(duì)路徑);

          4.1.在JAXP-DOM的中加入了插入的insertBefore();的方法
          a.創(chuàng)建節(jié)點(diǎn)
          Element_Obj.createElement("結(jié)點(diǎn)名");

          b.獲取到參考節(jié)點(diǎn)

          c.獲取到某一個(gè)節(jié)點(diǎn)(父節(jié)點(diǎn))
          Element ele = doc.getDocumentElement();

          d.通過父節(jié)點(diǎn)插入某一個(gè)節(jié)點(diǎn)
          ele.insertBefore(插入的節(jié)點(diǎn),參考節(jié)點(diǎn));

          5.創(chuàng)建寫入工廠對(duì)象 【transformer 轉(zhuǎn)換模型】
          TransformerFactory tff = TransformerFactory.newInstance();

          6.通過工廠對(duì)象獲取到具體的寫入對(duì)象
          Transformer tf = tff.newTransformer();

          <------
          7.調(diào)用寫入對(duì)象的write方法寫入
          ▲--> tf.write(new DOMSource("源文件路徑"),new StreamResult(new FileOutputStream("目標(biāo)路徑")));


          ◆◆◆注;
          1.new DOMSource() 是一個(gè)類,而這個(gè)類可以關(guān)聯(lián)要轉(zhuǎn)換的Document對(duì)象
          2.new StreamResult() 是一個(gè)類,可以表示數(shù)據(jù)寫出的目的地。

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ XML —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          XML約束;
          為什么要有?
          在XML文檔中的標(biāo)簽可以隨意定義,使得文檔不規(guī)范,
          也避免用戶輸入有誤,提高用戶的體驗(yàn)性。

          如;在描述人職業(yè)的XML文檔中,用戶不小心寫錯(cuò)了或有人故意破壞,寫了個(gè)動(dòng)物標(biāo)簽。


          什么是XML約束?
          規(guī)定(規(guī)范)XML文檔的書寫格式。

          作用;
          使得文檔變得規(guī)范,便于閱讀,提高用戶的體驗(yàn)性。

          主流約束;
          DTD
          是一個(gè)控制不是很精準(zhǔn)的一個(gè)約束技術(shù)
          文件后綴是 .dtd

          Scheme
          是一個(gè)控制精準(zhǔn)的一個(gè)約束技術(shù),逐步的取代DTD
          文件后綴是 .xsd

          ◆◆◆注;叫是叫Scheme而在書寫scheme約束文檔時(shí)是寫schema
          ----因?yàn)镾chema的意思更加具體。

          schema :模式,計(jì)劃
          scheme :計(jì)劃,策劃,體制

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ DTD —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


          DTD約束;
          是什么?
          Document Type Definition 文檔類型定義

          作用;
          用于規(guī)定(規(guī)范)一個(gè)XML文檔的書寫格式

          特點(diǎn);
          對(duì)文檔的內(nèi)容控制不夠精準(zhǔn)是,如做不到內(nèi)容的控制等。

          --------------------------------------------DTD文檔定義 --------------------------------------------------------------------


          DTD文檔定義;
          1.常用的數(shù)據(jù)類型;
          (#PCDATA) 可變長(zhǎng)度的字符串
          EMPTY 空類型 【一般用于定義閉合標(biāo)簽】
          ANY 任意類型

          2.常用的定義符號(hào);
          ? 0或1
          + 1或N
          * 0或N
          () 必須出現(xiàn) 1次


          3.常用的定義元素的關(guān)鍵字;
          ELEMENT 定義元素
          ATTLIST 定義元素的屬性


          ◆注;
          1.都是大寫
          2.一個(gè)標(biāo)簽名可以同時(shí)使用2個(gè),
          因?yàn)椋籈LMENT是定義元素
          ATTLIST 是定義元素的屬性

          4.定義屬性常用的關(guān)鍵字;
          1.#REQUIRED 必須給這個(gè)標(biāo)簽定義該屬性
          2.#IMPLIED 這個(gè)屬性可寫可不寫
          3.#Fixed 給這個(gè)屬性定義一個(gè)固定值

          --------------------------------------------DTD文檔引入方式 --------------------------------------------------------------------

          DTD文檔引入方式;
          1.外部引入;
          <!DOCTYPE 根名 SYSTEM "文件名">

          2.內(nèi)部定義;
          <!DOCTYPE 根名[
          <!ELEMENT 根名(子標(biāo)簽)>
          <!ELEMENT 子 (#PCDATA)>
          ]>

          3.外部引入;key --- value
          <!DOCTYPE 根名 PUBLIC "名稱空間【唯一】" "文件名">

          --------------------------------------------DTD文檔定義 --------------------------------------------------------------------


          1.文件后綴是DTD

          <!ELEMENT 書名 (作者+,價(jià)格?)>
          <!ElEMENT 作者 (#PCDATA)>
          <!ATTLIST 作者 titile CDATA #IMPLIED>
          <!ELEMENT 價(jià)格 (#PCDATA)>

          2.DTD文件沒有注釋

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ Scheme —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          Scheme約束;
          為什么要有?
          1.DTD約束對(duì)XML的格式控制不夠精準(zhǔn)
          2.使得用戶可選擇性更多,因?yàn)镾cheme也比較麻煩


          是什么?
          Scheme;體制,策劃

          作用;
          規(guī)范(規(guī)定)XML的文檔書寫格式

          為什么說Scheme控制更加精準(zhǔn)?
          1.可選擇規(guī)定的內(nèi)容類型更多
          2.內(nèi)容類型的控制
          3.內(nèi)容的規(guī)定
          特點(diǎn);
          1.文件后綴是.xsd
          2.scheme文件的也是屬于一個(gè)XML文件,因?yàn)槁暶魈幣cXML一樣
          3.文件的根節(jié)點(diǎn)一定是【schema】

          ◆◆◆注;不要寫成scheme ,
          scheme 是策劃,計(jì)劃,體制
          schema 是 計(jì)劃,模式

          --------------------------------------------Scheme文檔定義 --------------------------------------------------------------------


          Scheme文檔定義;
          1.可以指定一個(gè)自定義名

          2.xmlns 的W3C域名是固定的格式,不可以改變

          3.targetNamespace 域名名稱空間可以自定義,但是是要求唯一的

          4.elementFormDefault 是固定的格式

          5.根標(biāo)簽一定要是 【schema】


          常用關(guān)鍵字解析;
          sequence 序列;
          是指定約束XML文件定義節(jié)點(diǎn)時(shí)
          按照一個(gè)什么順序進(jìn)行一個(gè)定義

          complextype 復(fù)雜類型;
          是在xsd文檔聲明這個(gè)節(jié)點(diǎn)下有子節(jié)點(diǎn)。

          name;
          是標(biāo)簽名
          type;
          是標(biāo)簽內(nèi)容類型

          ★注;type如果設(shè)置成數(shù)值型(double,decimal....)的,一般都是要顯示的賦值


          常見的單詞
          Ocuurs 重視的意思
          decimal 小數(shù)

          --------------------------------------------Scheme文檔開頭解析 --------------------------------------------------------------------

          xs是自定義的一個(gè)標(biāo)識(shí)符
          名稱空間是一個(gè)key,保證唯一性用于約束XML文檔時(shí),XML文檔找到這個(gè)文檔

          <?xml version = "1.0" encoding = "UTD-8"> ----- 指定文檔類型
          <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" ----- 固定的格式

          targetNamespace = "自定義" ----- 自定義域名,用于標(biāo)識(shí),
          |====一般是域名,保證在網(wǎng)絡(luò)上的唯一性

          elementFormDefault = "qualified" ----- 固定格式,qualified;合格
          >

          </xs:schema>

          ----------------------------------XML文檔 —— 引用 —— Scheme文檔 --------------------------------------------------------------------

          1.my ----- 是自定義的一個(gè)名字,可以用于在引入多個(gè)約束文件時(shí),可以區(qū)分

          2.xis ----- 是自定義的,也是可以用于在引入多個(gè)約束文件時(shí)區(qū)分,

          3.xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"
          ----- 是固定格式

          4.xis:schemaLacation ----- 引入一個(gè)本地的文件,通過使用 名稱空間 + 文件名 指定 key + value

          <my:schema 【根名】 xmlns:my = "scheme文檔的名稱空間值"
          xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"
          xis:schemaLacation = "scheme文檔名稱空間 文件名"
          >

          </my:scheme>

          TML和XML都是用于描述和組織數(shù)據(jù)的標(biāo)記語(yǔ)言,但它們之間有著許多區(qū)別。本文將詳細(xì)介紹HTML和XML的區(qū)別,包括語(yǔ)法、標(biāo)記、應(yīng)用場(chǎng)景等方面。

          一、語(yǔ)法差異

          1. 標(biāo)記語(yǔ)言的語(yǔ)法

          HTML和XML都是標(biāo)記語(yǔ)言,但它們的語(yǔ)法有所不同。

          HTML是一種超文本標(biāo)記語(yǔ)言,其語(yǔ)法由預(yù)定義的標(biāo)記組成,標(biāo)記通常用于指定文本的結(jié)構(gòu)、樣式和鏈接。HTML標(biāo)記由尖括號(hào)包圍,其中有些標(biāo)記是成對(duì)出現(xiàn)的,例如<html></html>,有些標(biāo)記是單獨(dú)出現(xiàn)的,例如<img>。HTML標(biāo)記有一定的語(yǔ)義含義,例如<h1>表示文本為一級(jí)標(biāo)題,<p>表示文本為段落等。

          XML是一種可擴(kuò)展標(biāo)記語(yǔ)言,其語(yǔ)法由用戶定義的標(biāo)記組成,標(biāo)記通常用于指定數(shù)據(jù)的結(jié)構(gòu)和屬性。XML標(biāo)記同樣由尖括號(hào)包圍,但其所有標(biāo)記都必須成對(duì)出現(xiàn),例如<name>haiyong</name>。XML標(biāo)記沒有預(yù)定義的語(yǔ)義含義,用戶可以根據(jù)需要自定義標(biāo)記。

          2. 文檔類型定義(DTD)

          HTML和XML在文檔類型定義方面也有所不同。

          HTML的文檔類型定義是預(yù)定義的,即文檔類型定義已經(jīng)由W3C(萬維網(wǎng)聯(lián)盟)定義好了。HTML文檔通常使用DOCTYPE聲明指定文檔類型,例如HTML 4.01的聲明為:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          

          XML的文檔類型定義是由用戶定義的,用戶可以根據(jù)需要自定義文檔類型定義。XML文檔通常使用DOCTYPE聲明指定文檔類型,例如:

          <!DOCTYPE note SYSTEM "note.dtd">
          

          其中,note.dtd是自定義的文檔類型定義文件。

          二、標(biāo)記差異

          1. 標(biāo)記名稱

          HTML和XML的標(biāo)記名稱也有所不同。

          HTML標(biāo)記通常是有語(yǔ)義含義的,例如<p>表示段落,<h1>表示一級(jí)標(biāo)題,而XML標(biāo)記的名稱則通常是根據(jù)數(shù)據(jù)的結(jié)構(gòu)和屬性命名的,例如<customer>表示一個(gè)客戶數(shù)據(jù),<order>表示一個(gè)訂單數(shù)據(jù)。

          2. 標(biāo)記屬性

          HTML和XML的標(biāo)記屬性也有所不同。

          HTML標(biāo)記通常具有一些預(yù)定義的屬性,例如<img>標(biāo)記具有src、alt、width、height等屬性。這些屬性有一定的語(yǔ)義含義,例如src表示圖像的URL地址,alt表示圖像的替代文本等。

          XML標(biāo)記的屬性則由用戶定義,用戶可以根據(jù)需要定義任意數(shù)量和名稱的屬性。XML標(biāo)記的屬性沒有預(yù)定義的語(yǔ)義含義,用戶可以根據(jù)需要定義屬性的

          語(yǔ)義。

          三、應(yīng)用場(chǎng)景差異

          HTML和XML在應(yīng)用場(chǎng)景上也有所不同。

          1. HTML的應(yīng)用場(chǎng)景

          HTML主要用于構(gòu)建Web頁(yè)面,可以使用HTML語(yǔ)言來定義網(wǎng)頁(yè)的結(jié)構(gòu)、樣式和功能。HTML通過標(biāo)記來描述網(wǎng)頁(yè)元素,如標(biāo)題、段落、鏈接、圖片、表格等,同時(shí)也支持一些交互性的功能,如表單、腳本等。HTML網(wǎng)頁(yè)通常在Web瀏覽器中顯示,用戶可以通過Web瀏覽器來訪問和使用。

          2. XML的應(yīng)用場(chǎng)景

          XML主要用于描述數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)內(nèi)容,可以用于描述任何類型的數(shù)據(jù),如文本、圖像、音頻、視頻等。XML通過標(biāo)記來描述數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)屬性,如數(shù)據(jù)元素、數(shù)據(jù)屬性、數(shù)據(jù)類型等。XML可以用于在不同的系統(tǒng)和平臺(tái)之間傳遞數(shù)據(jù),也可以用于數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)交換。XML還可以用于定義和描述Web服務(wù),如SOAP和RESTful API。

          四、總結(jié)

          HTML和XML都是標(biāo)記語(yǔ)言,但其語(yǔ)法、標(biāo)記、應(yīng)用場(chǎng)景等方面都有所不同。HTML是一種超文本標(biāo)記語(yǔ)言,其標(biāo)記具有預(yù)定義的語(yǔ)義含義,主要用于構(gòu)建Web頁(yè)面;XML是一種可擴(kuò)展標(biāo)記語(yǔ)言,其標(biāo)記沒有預(yù)定義的語(yǔ)義含義,主要用于描述數(shù)據(jù)結(jié)構(gòu)和內(nèi)容,以及定義Web服務(wù)。在實(shí)際應(yīng)用中,開發(fā)者需要根據(jù)實(shí)際需求選擇使用HTML或XML,并根據(jù)標(biāo)準(zhǔn)規(guī)范編寫符合語(yǔ)法和標(biāo)記要求的文檔。


          主站蜘蛛池模板: 成人H动漫精品一区二区| 视频一区在线播放| 成人精品视频一区二区三区不卡 | 一区二区三区四区精品| 无码AV一区二区三区无码| 日本高清不卡一区| 日本精品一区二区在线播放| 日韩在线不卡免费视频一区| 国产一区二区三区播放| 亚洲另类无码一区二区三区| 中文字幕日韩人妻不卡一区| 日本精品一区二区久久久| 无码人妻精品一区二区三区99性| 精品国产一区二区三区2021| 精品91一区二区三区| 国产情侣一区二区| 精品熟人妻一区二区三区四区不卡 | 国产SUV精品一区二区四 | 538国产精品一区二区在线| 日韩久久精品一区二区三区| 亚洲熟妇无码一区二区三区| 亚洲国产成人久久一区二区三区 | 日本一道高清一区二区三区| 无码人妻精品一区二区三区66| 国产在线精品一区二区中文| 中文字幕亚洲一区| 日韩一区二区三区无码影院| 久久99精品波多结衣一区| 久久精品一区二区三区不卡| 亚洲视频在线一区| 亚洲AV无码一区二区三区人| 国产一区二区不卡老阿姨| 精品视频在线观看一区二区三区| 日韩一区二区三区精品| 国产午夜精品一区二区三区小说| 久久久91精品国产一区二区三区 | 国产在线精品一区二区夜色| 91精品一区国产高清在线| 国产高清视频一区三区| 亚洲一区二区三区无码国产| 国产成人午夜精品一区二区三区|