欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JSP針對(duì)XML文件操作技巧實(shí)例分析

 更新時(shí)間:2015年11月12日 15:27:42   作者:劉佳翰  
這篇文章主要介紹了JSP針對(duì)XML文件操作技巧,較為詳細(xì)的分析了XML文件的相關(guān)概念、原理、用途,并結(jié)合實(shí)例介紹了基于JSP解析XML文件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了JSP針對(duì)XML文件操作技巧。分享給大家供大家參考,具體如下:

XML(Extensible Markup   Language)可擴(kuò)展標(biāo)記語(yǔ)言,這個(gè)基礎(chǔ)知識(shí)在早些已經(jīng)學(xué)習(xí)過(guò)。而這篇教程為什么把它放在J2EE下邊呢,因?yàn)樗彩荍2EE的13規(guī)范之一,雖然XML是W3C萬(wàn)維網(wǎng)組織聯(lián)盟指定的,并做了規(guī)范,所以說(shuō)也是一種規(guī)范,我們也必須按照規(guī)范來(lái),和JDBC,Servlet,Jsp,Ejb等一樣的。

前邊的文章已經(jīng)介紹了XML的一些基礎(chǔ)知識(shí),主要是用來(lái)存儲(chǔ),傳輸數(shù)據(jù)的,但是這些數(shù)據(jù)我們?cè)趺吹玫侥兀簿褪钦f(shuō)怎么來(lái)解析XML呢?這里總結(jié)一下。

首先解析XML文件一般有兩種方式:DOM解析和SAX解析,首先看一下兩者的概念和基礎(chǔ)知識(shí):

一,原理:

DOM解析:在程序開(kāi)始執(zhí)行的時(shí)候,先將整個(gè)XML文件加載到內(nèi)存中,在內(nèi)存中形成一棵DOM樹(shù),然后通過(guò)某種編程語(yǔ)言對(duì)這顆樹(shù)上的任意節(jié)點(diǎn)進(jìn)行增刪改查操作。
SAX解析:基于事件驅(qū)動(dòng)型的解析方式。解析是有順序的,順序遵守:從左到右,從上到下。
基于事件驅(qū)動(dòng)型的解析方式不需要將XML文件全部加載到內(nèi)存中,所以這種方式不會(huì)耗費(fèi)大量的內(nèi)存,
只不過(guò)解析過(guò)去的節(jié)點(diǎn)不能再次解析,不夠靈活,如果還想解析,只能再次從XML文件頭開(kāi)始。

二,兩者的優(yōu)缺點(diǎn):

DOM解析:優(yōu)點(diǎn):靈活。因?yàn)檎麄€(gè)樹(shù)都在內(nèi)存中,我們隨時(shí)隨地都可以對(duì)某個(gè)節(jié)點(diǎn)操作,解析過(guò)去的節(jié)點(diǎn)還可以再次解析,比較靈活。

缺點(diǎn):如果XML文件很大,則會(huì)耗費(fèi)大量的內(nèi)存,因?yàn)檫@個(gè)XML文件很大,而需要訪(fǎng)問(wèn)
的節(jié)點(diǎn)又很少。
總結(jié): 所以XML文件較小、需要解析的節(jié)點(diǎn)較多,這樣才值得使用DOM解析。

SAX解析:優(yōu)點(diǎn):不會(huì)耗費(fèi)大量的內(nèi)存。
缺點(diǎn):不靈活(我們可以使用另外一個(gè)技術(shù)XPATH,使用它可以在XML文件中快速定位要
解析的節(jié)點(diǎn))。
總結(jié):有了XPath技術(shù),SAX解析方式成為我們常用的。

三,在JAVA中,java的JDK提供了關(guān)于XML的解析:org.w3c.dom.*,這是SUN對(duì)w3c規(guī)范的實(shí)現(xiàn)。但是效率,不夠高。所以我們經(jīng)常使用第三方組件,例如dom4j等,效率相對(duì)來(lái)說(shuō)較高一些。

四,好,我們來(lái)看一下實(shí)例吧:

1,利用JAVA中的JDK提供的,來(lái)進(jìn)行解析讀XML文件:來(lái)看兩篇博客寫(xiě)的很詳細(xì)的:Java Dom解析,Java Sax解析。

2,這里寫(xiě)一下,利用dom4j的解析方法,其實(shí)很相同,只不過(guò)我感覺(jué)dom4j的方法名,屬性名可能更容易使用:

a, 讀XML文件(以下是基于SAX解析方式):

public static void main(String[] args) throws Exception{ 
    //創(chuàng)建SAX解析器對(duì)象 
    SAXReader reader = new SAXReader(); 
    //讀取XML文件 
    Document document = reader.read(new File("db-config.xml")); 
    //獲取根元素 
    Element rootElement = document.getRootElement(); 
    System.out.println("根節(jié)點(diǎn)的名字:" + rootElement.getName()); 
    //獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)driver 
    Element driverElement = rootElement.element("driver"); 
    String driver = driverElement.getText(); 
    System.out.println(driver); 
    //獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)url 
    String url = rootElement.elementText("url"); 
    System.out.println(url); 
    //獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)user 
    String user = rootElement.elementText("user"); 
    System.out.println(user); 
    //獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)password 
    String password = rootElement.elementText("password"); 
    System.out.println(password); 
} 

b,寫(xiě)文件,就是從上向下的了,我們dom4j中的DOM解析的方式:

public static void main(String[] args) throws Exception{ 
    //在內(nèi)存中先創(chuàng)建一個(gè)文檔對(duì)象 
    Document document = DocumentHelper.createDocument(); 
    //構(gòu)造文檔樹(shù) 
    Element stuInfoElement = document.addElement("數(shù)學(xué)專(zhuān)業(yè)書(shū)籍"); 
    Element stuElement1 = stuInfoElement.addElement("書(shū)"); 
    stuElement1.addAttribute("id", "110"); 
    Element nameElement1 = stuElement1.addElement("書(shū)名"); 
    nameElement1.setText("近世代數(shù)"); 
    Element stuElement2 = stuInfoElement.addElement("書(shū)"); 
    stuElement2.addAttribute("id", "120"); 
    Element nameElement2 = stuElement2.addElement("書(shū)名"); 
    nameElement2.setText("高等代數(shù)"); 
    //設(shè)置字符編碼方式 
    OutputFormat format = OutputFormat.createPrettyPrint(); 
    format.setEncoding("GB18030"); 
    //開(kāi)始寫(xiě)入 
    XMLWriter xmlWriter = new XMLWriter(new FileWriter("students.xml"),format); 
    xmlWriter.write(document); 
    xmlWriter.close(); 
} 

最后寫(xiě)成的文件:

<?xml version="1.0" encoding="GB18030"?> 
 <數(shù)學(xué)專(zhuān)業(yè)書(shū)籍> 
  <書(shū) id="110"> 
    <書(shū)名>張三</書(shū)名> 
  </書(shū)> 
 <書(shū) id="110"> 
    <書(shū)名>張三</書(shū)名> 
  </書(shū)> 
 </數(shù)學(xué)專(zhuān)業(yè)書(shū)籍> 

綜上,為XML解析的簡(jiǎn)單總結(jié),當(dāng)然實(shí)際中會(huì)遇到非常復(fù)雜的XML文件,我們可以自己來(lái)試著寫(xiě)這些解析他們的文件,當(dāng)然也可以使用人家寫(xiě)好的,這里只是為了多學(xué)習(xí),理解它們的本質(zhì)。

希望本文所述對(duì)大家JSP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • jsp實(shí)現(xiàn)Servlet文件下載的方法

    jsp實(shí)現(xiàn)Servlet文件下載的方法

    這篇文章主要介紹了jsp實(shí)現(xiàn)Servlet文件下載的方法,涉及jsp基于Servlet實(shí)現(xiàn)文件下載的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 按IE后退按鈕時(shí)讓JSP不讀緩存

    按IE后退按鈕時(shí)讓JSP不讀緩存

    按IE后退按鈕時(shí)讓JSP不讀緩存...
    2006-10-10
  • JSP清除頁(yè)面緩存常用方法小結(jié)

    JSP清除頁(yè)面緩存常用方法小結(jié)

    這篇文章主要介紹了JSP清除頁(yè)面緩存常用方法,實(shí)例總結(jié)了JSP清理頁(yè)面緩存、cookie緩存、session緩存及利用JavaScript清理緩存的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • 我認(rèn)為JSP有問(wèn)題(下)

    我認(rèn)為JSP有問(wèn)題(下)

    我認(rèn)為JSP有問(wèn)題(下)...
    2006-10-10
  • JSP連接SQL Server 2000系統(tǒng)配置

    JSP連接SQL Server 2000系統(tǒng)配置

    JSP連接SQL Server 2000系統(tǒng)配置...
    2006-10-10
  • Java Servlet和JSP教程

    Java Servlet和JSP教程

    Java Servlet和JSP教程...
    2006-10-10
  • servlet分頁(yè)代碼示例

    servlet分頁(yè)代碼示例

    本文介紹了servlet分頁(yè)代碼實(shí)現(xiàn),采用Oracle數(shù)據(jù)庫(kù),獲取SCOTT用戶(hù)EMP表中的數(shù)據(jù),分頁(yè)實(shí)現(xiàn)步驟看下面代碼
    2014-01-01
  • 最新評(píng)論