1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      XML解析方法詳解-創(chuàng)新互聯(lián)

      今日目標(biāo):DOM、 SAX、 STAX、 XML解析API

      創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、江漢網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為江漢等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

      今日重點(diǎn):JAXP DOM解析 、JAXP SAX解析、XML PULL解析。

      XML現(xiàn)在已成為一種通用的數(shù)據(jù)交換格式,平臺(tái)的無(wú)關(guān)性使得很多場(chǎng)合都需要用到XML。深入了解前端知識(shí)更能充分解決自動(dòng)化的異常類問(wèn)題。

       一、

      1、XML有三種解析方式:DOM SAX STAX

      2、XML的作用(企業(yè)應(yīng)用):存儲(chǔ)數(shù)據(jù)、配置文件、傳輸數(shù)據(jù)。

       存儲(chǔ)和傳輸數(shù)據(jù)經(jīng)常一起使用,XML數(shù)據(jù)通常由程序生成的,用程序解析XML(XML一般不加約束)

       配置文件單獨(dú)使用(通常會(huì)加約束)

      3、DOM

       全稱為:Document Object Model文檔對(duì)象模型。

       DOM的解析思想 :將整個(gè)XML數(shù)據(jù)讀取到內(nèi)存中,在內(nèi)存中形成文檔樹形結(jié)構(gòu),

       對(duì)內(nèi)存中文檔樹形結(jié)構(gòu)進(jìn)行操作。

       優(yōu)點(diǎn):API簡(jiǎn)單。因?yàn)橐淮涡约虞d整個(gè)文檔,文檔所有數(shù)據(jù)都在內(nèi)存中,所以簡(jiǎn)便易用 處理

       較方便。可頻繁修改XML文件內(nèi)容(即可回寫)。

       缺點(diǎn):需將整個(gè)XML文檔加載到內(nèi)存,消耗系統(tǒng)資源。速度較慢。當(dāng)XML文檔過(guò)大時(shí),會(huì)導(dǎo)致

         無(wú)法全部加載進(jìn)內(nèi)存,內(nèi)存溢出問(wèn)題。

      **DOM是官方提供的XML解析標(biāo)準(zhǔn),由W3C制定 。

      4、SAX

       全稱為:Simple API for XMl簡(jiǎn)單XML解析API。

       SAX解析思想:為解析器綁定回調(diào)程序Handler , 解析器讀取xml文件,觸發(fā)相應(yīng)事件,

       自動(dòng)調(diào)用handler中對(duì)應(yīng)事件方法

       優(yōu)點(diǎn):SAX是輕量級(jí)的接口,解析速度快,無(wú)須占用太多內(nèi)存資源。

       缺點(diǎn):SAX每次都要從頭到尾遍歷節(jié)點(diǎn),修改不易實(shí)現(xiàn)。編程復(fù)雜,如在內(nèi)存中不保留讀取的數(shù)據(jù),將無(wú)法回寫。

         注:如果SAX、STAX在內(nèi)存中邊讀邊保存數(shù)據(jù)的話 ,就類似于DOM了。

      **SAX是民間XML解析標(biāo)準(zhǔn),來(lái)自XML社區(qū)。

      **采用“推”模式,PUSH。

      5、STAX

       全稱是:Streaming API for XML ,XML解析流API。

       STAX解析思想 :提高SAX模式解析效率。亦為邊讀邊處理。

      **采用“拉”模式,PULL。

      *****以上三種解析方式:性能比較::STAX >SAX >DOM

      6、什么是推模式?什么是拉模式?

      PUSH:是以服務(wù)器為主,控制操作流程模式。

       當(dāng)你將文檔和處理程序 交給解析器,解析器自動(dòng)進(jìn)行解析,調(diào)用相應(yīng)事件處理方法 (該過(guò)程不由你自己控制)。

       服務(wù)器主動(dòng)向客戶端發(fā)送信息,發(fā)送過(guò)程中客戶端不能干預(yù) 。

      PULL:是以客戶端為主,控制操作流程模式。

      ********

      JAXP:

       全稱是Java API for XML Processing。

       它是一套API。DOM、SAX、STAX只是XML的解析思想。JAXP是DOM、SAX、STAX的API具體實(shí)現(xiàn)。

       由SUN提供 ,在JDK 6.0以后全面支持DOM、SAX、STAX三種解析方式。

      XML PULL:拉模式解析XML框架,內(nèi)置集成Android手機(jī)內(nèi)部 。

      DOM4J:DOM解析方式框架,開(kāi)源。在企業(yè)端JavaEE 軟件開(kāi)發(fā)中。為最流行開(kāi)發(fā)框架。

      javax.xml核心xml解析API,是DOM、SAX、STAX公用API。

      org.w3c.dom 與DOM解析相關(guān)具體API

      org.xml.sax 與SAX解析相關(guān)具體API

      整個(gè)XML會(huì)被解析為樹形結(jié)構(gòu),元素、屬性、文本,都會(huì)被解析為 Node節(jié)點(diǎn) 。

      ********

      7、DOM解析入門:

      (一)

      (1)創(chuàng)建解析器工廠

       DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();

      (2)根據(jù)解析器工廠獲得解析器

       DocumentBuilder documentBuilder=builderFactory.newDocumentBuilder();

      (3)解析器讀取XML文檔進(jìn)行解析,為Document對(duì)象(文檔對(duì)象,代表整個(gè)XML文檔)

       Document document=documentBuilder.parse("test.xml");

      (4)獲得document文檔后,就可以對(duì)它進(jìn)行操作了。

      例如 :可以通過(guò)getElementsByTagName查找指定名稱元素NodeList。

       NodeList nodeList=document.getElementsByTagName("name");

      然后遍歷集合獲得每個(gè)Node節(jié)點(diǎn)。

      for(int i=0;i

        Element node=(Element)nodeList.item(i);

        再通過(guò)Node的getTextContent獲得節(jié)點(diǎn)文本內(nèi)容 。

        System.out.println(node.getTextContent());

       }

      (二)**node節(jié)點(diǎn)公共API中,

      getNodeName()返回節(jié)點(diǎn)的名稱

      getNodeType()返回節(jié)點(diǎn)的類型

      getNodeValue()返回節(jié)點(diǎn)的值

      (三)**XML 提供數(shù)據(jù)只能通過(guò)兩種情況 :

      第一種 xml解析技術(shù) 第二種

      * 獲得元素文本子節(jié)點(diǎn)內(nèi)容  獲得元素后 element.getTextContent()  element.getFirstChild().getNodeValue()

      * 獲得元素屬性值  獲得元素后 element.getAttribute(屬性名)

      (四)節(jié)點(diǎn)元素查詢時(shí)

      1、全局查找縮小范圍

      2、相對(duì)位置查找 父親 兒子 兄弟 獲得相對(duì)節(jié)點(diǎn)元素內(nèi)容

      注意事項(xiàng)

      1、查詢?cè)刈庸?jié)點(diǎn)時(shí),注意回車換行

      2、Document 類中 getElementById --- 使用時(shí) xml文檔必須有約束 DTD默認(rèn)加載 , Schema需要編程

      (五)對(duì)XML 進(jìn)行增刪改查 ---- 增加 、修改 、刪除

      * 對(duì)內(nèi)存XML 文檔修改后,回寫到xml 文件中

      添加節(jié)點(diǎn) 1、創(chuàng)建目標(biāo)節(jié)點(diǎn) document.createXXX 2、找到合適位置插入 父節(jié)點(diǎn).appendChild

      修改節(jié)點(diǎn) 1 修改文本內(nèi)容 element.setTextContent(value) 2 修改屬性 element.setAttribute(name,value)

      刪除節(jié)點(diǎn) 1 獲得要?jiǎng)h除節(jié)點(diǎn)o  2. o.getParentNode().removeChild(o);

      **(詳細(xì)代碼參見(jiàn)代碼附錄)

      8、JAXP SAX 解析API

      原理見(jiàn)上。

      事件

      startDocument 文檔開(kāi)始事件

      startElement 元素開(kāi)始事件

      characters 文本元素事件

      endElement 元素結(jié)束事件

      endDocument 文檔結(jié)束事件

      對(duì)于SAX編程不要求掌握,了解原理就可以了。

      在startElement 中 獲得 開(kāi)始元素是什么?qName  獲得開(kāi)始標(biāo)簽屬性內(nèi)容 ?attributes.getValue("屬性名稱")

      在characters 中 獲得讀取到文本元素是什么 ? new String(ch,start,length)

      在endElement 中 獲得當(dāng)前結(jié)束元素是什么 ?qName

      9、XML Pull 解析器

      (一)為開(kāi)源框架 ,使用STAX類似拉模式解析方式。Android手機(jī)系統(tǒng)內(nèi)置 工具類庫(kù)。

      ** 從事Android開(kāi)發(fā) 。因?yàn)閮?nèi)置,無(wú)需下載任何jar包 ---- 如果從事JavaEE開(kāi)發(fā)需要單獨(dú)下載pull解析器類庫(kù)。

      **在pull 解析器官網(wǎng)上,看到pull解析器 API接口 。

      **XNI2 XmlPull 、XPP3/MXP1 、kXML2 都是 pull解析器 接口API 的實(shí)現(xiàn)

      **課程采用 xpp3 這套 pull解析器實(shí)現(xiàn)。

      (二)什么是jar 包?

      很多開(kāi)源框架,會(huì)將class文件用zip格式進(jìn)行壓縮 獲得壓縮包。擴(kuò)展名 jar (jar包)

      (三)XML PULL 快速入門

      (1)、去官網(wǎng)下載 zip 壓縮包(xpp3-1.1.3.4.C_all.zip),解壓縮獲得jar包(xpp3-1.1.3.4.C.jar)。

      (2)、在當(dāng)前工程目錄下新建lib文件夾,將該jar包放到lib目錄下。

      (3)、右擊jar包,Add to build path 將jar包添加到 當(dāng)前工程 build path.

      事件

      start document

      start tag

      text

      end tag

      end document

      **使用pull解析器生成XML

      (1)、獲得解析器工廠

       XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();

      (2)、通過(guò)解析器工廠 獲得序列化程序?qū)ο?XmlSerializer

       XmlPullParser parser = parserFactory.newPullParser();

      (3)、設(shè)置 輸出XML文件 位置

      (4)、開(kāi)始寫  存在5個(gè)方法寫你需要內(nèi)容

      *** 能力: 將List中數(shù)據(jù) 序列化到一個(gè)XML文件中 。

      10、XML PULL 解析方式 與 SAX push 大區(qū)別?

      程序員可以自己控制解析過(guò)程 。

      用push 自動(dòng)執(zhí)行所有解析事件,使用pull 程序員可以控制只執(zhí)行關(guān)注的那些事件,pull解析方式效率比push方式更高。

      **獲得元素屬性 ----- 在元素開(kāi)始時(shí) ,通過(guò)parser.getAttributeValue(null,屬性名稱);

      獲得元素內(nèi)部文本內(nèi)容 ----- 在元素開(kāi)始時(shí), parser.nextText();

      11、XML PULL 對(duì)xml文件 進(jìn)行CURD (Create Update Read Delete)

      * 使用pull 讀取xml,讀取內(nèi)容不釋放,在內(nèi)存中保留 ---- DOM 類似

      * 解析XML --- List 序列化 List --- XML

      * 使用pull 進(jìn)行增刪改查 --- 讀取xml全部數(shù)據(jù)保存內(nèi)存list對(duì)象,對(duì)內(nèi)存list對(duì)象進(jìn)行增刪改查。

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      網(wǎng)頁(yè)標(biāo)題:XML解析方法詳解-創(chuàng)新互聯(lián)
      文章地址:http://www.ef60e0e.cn/article/docsds.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        柳河县| 潮安县| 楚雄市| 青河县| 哈尔滨市| 沐川县| 逊克县| 德清县| 宽城| 岗巴县| 临潭县| 拉萨市| 绥滨县| 高清| 垣曲县| 金昌市| 高碑店市| 滦平县| 林州市| 蓬溪县| 壶关县| 陇南市| 务川| 龙胜| 含山县| 盐城市| 都昌县| 临洮县| 翁牛特旗| 梁平县| 灵丘县| 隆回县| 察哈| 贡山| 潼关县| 陈巴尔虎旗| 会东县| 苏州市| 丽江市| 长岭县| 临朐县|