最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java解析XML格式數(shù)據(jù)的方法詳解

 更新時(shí)間:2015年10月26日 08:55:17   投稿:goldensun  
這篇文章主要介紹了Java解析XML格式數(shù)據(jù)的方法,并展示了較為常用的Java dom來(lái)解析XML的例子,需要的朋友可以參考下

最初,XML 語(yǔ)言?xún)H僅是意圖用來(lái)作為 HTML 語(yǔ)言的替代品而出現(xiàn)的,但是隨著該語(yǔ)言的不斷發(fā)展和完善,人們?cè)絹?lái)越發(fā)現(xiàn)它所具有的優(yōu)點(diǎn):例如標(biāo)記語(yǔ)言可擴(kuò)展,嚴(yán)格的語(yǔ)法規(guī)定,可使用有意義的標(biāo)記,內(nèi)容存儲(chǔ)和表現(xiàn)分離等等優(yōu)勢(shì)注定了該語(yǔ)言從誕生之日起就會(huì)走向輝煌。 XML 語(yǔ)言在成為 W3C 標(biāo)準(zhǔn)之后進(jìn)入到了一個(gè)快速發(fā)展的時(shí)期,當(dāng)然它本身所具有的一系列優(yōu)點(diǎn)和優(yōu)勢(shì)也注定了各大技術(shù)廠商對(duì)它的偏愛(ài),Java 作為軟件行業(yè)的一種開(kāi)發(fā)技術(shù)也迅速作出了反應(yīng),出現(xiàn)了多種對(duì) XML 支持的工具,本文將會(huì)從這個(gè)角度對(duì) Java 處理 XML 的幾種主流技術(shù)進(jìn)行介紹,希望能對(duì)您有所幫助。
Java 有哪些優(yōu)秀的類(lèi)庫(kù)及工具便于程序員對(duì) XML 進(jìn)行處理 ?

XML 三種解析方式簡(jiǎn)介
大名鼎鼎的 DOM
說(shuō)它大名鼎鼎可是一點(diǎn)不為過(guò),DOM 是 W3C 處理 XML 的標(biāo)準(zhǔn) API,它是許多其它與 XML 處理相關(guān)的標(biāo)準(zhǔn)的基礎(chǔ),不僅是 Java,其它諸如 Javascript,PHP,MS .NET 等等語(yǔ)言都實(shí)現(xiàn)了該標(biāo)準(zhǔn), 成為了應(yīng)用最為廣泛的 XML 處理方式。當(dāng)然,為了能提供更多更加強(qiáng)大的功能,Java 對(duì)于 DOM 直接擴(kuò)展工具類(lèi)有很多,比如很多 Java 程序員耳熟能詳?shù)?JDOM,DOM4J 等等, 它們基本上屬于對(duì) DOM 接口功能的擴(kuò)充,保留了很多 DOM API 的特性,許多原本的 DOM 程序員甚至都沒(méi)有任何障礙就熟練掌握了另外兩者的使用,直觀、易于操作的方式使它深受廣大 Java 程序員的喜愛(ài)。
綠色環(huán)保的 SAX
SAX 的應(yīng)運(yùn)而生有它特殊的需要,為什么說(shuō)它綠色環(huán)保呢,這是因?yàn)?SAX 使用了最少的系統(tǒng)資源和最快速的解析方式對(duì) XML 處理提供了支持。 但隨之而來(lái)繁瑣的查找方式也給廣大程序員帶來(lái)許多困擾,常常令人頭痛不已,同時(shí)它對(duì) XPath 查詢(xún)功能的支持,令人們對(duì)它又愛(ài)又恨。
默默無(wú)聞的 Digester:XML 的 JavaBean 化
Digester 是 apache 基金組織下的一個(gè)開(kāi)源項(xiàng)目,筆者對(duì)它的了解源于對(duì) Struts 框架的研究,是否有很多程序員想要一解各大開(kāi)源框架的設(shè)計(jì)甚至想要自己寫(xiě)一個(gè)功能強(qiáng)大的框架時(shí)會(huì)碰到這樣一個(gè)難題: 這些形形色色的用 XML 語(yǔ)言標(biāo)記的框架配置文件,框架底層是用什么技術(shù)來(lái)解析呢? DOM 解析耗費(fèi)時(shí)間,SAX 解析又過(guò)于繁瑣,況且每次解析系統(tǒng)開(kāi)銷(xiāo)也會(huì)過(guò)大, 于是,大家想到需要用與 XML 結(jié)構(gòu)相對(duì)應(yīng)的 JavaBean 來(lái)裝載這些信息,由此 Digester 應(yīng)運(yùn)而生。它的出現(xiàn)為 XML 轉(zhuǎn)換為 JavaBean 對(duì)象的需求帶來(lái)了方便的操作接口,使得更多的類(lèi)似需求得到了比較完美的解決方法, 不再需要程序員自己實(shí)現(xiàn)此類(lèi)繁瑣的解析程序了。與此同時(shí) SUN 也推出了 XML 和 JavaBean 轉(zhuǎn)換工具類(lèi) JAXB,有興趣的讀者可以自行了解。


下面來(lái)看一個(gè)Java dom解析XML的例子:

import java.io.*;  
import org.w3c.dom.*;  
import org.xml.sax.SAXException;  
import javax.xml.parsers.*;  
public class Xml {  
  public static void main(String[] args) {  
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
    try {  
      DocumentBuilder builder = factory.newDocumentBuilder();  
      Document doc = builder.parse(new File("E:\\work\\test\\xml1.xml"));  
      NodeList nl = doc.getElementsByTagName("book");  
      for (int i = 0; i < nl.getLength(); i++) {  
        System.out.println(nl.item(i).getAttributes().item(0));  
        System.out.println(doc.getElementsByTagName("title").item(i)  
            .getFirstChild().getNodeValue());  
        System.out.println(doc.getElementsByTagName("title").item(i)  
            .getAttributes().item(0));  
        System.out.println(doc.getElementsByTagName("author").item(i)  
            .getFirstChild().getNodeValue());  
        System.out.println(doc.getElementsByTagName("year").item(i)  
            .getFirstChild().getNodeValue());  
        System.out.println(doc.getElementsByTagName("price").item(i)  
            .getFirstChild().getNodeValue());  
        System.out.println();  
      }  
    } catch (ParserConfigurationException e) {  
      e.printStackTrace();  
    } catch (SAXException e) {  
      e.printStackTrace();  
    } catch (IOException e) {  
      e.printStackTrace();  
    }  
  }  
}  

 xml:

<bookstore> 
<book category="COOKING"> 
 <title lang="en">Everyday Italian</title> 
 <author>Giada De Laurentiis</author> 
 <year>2005</year> 
 <price>30.00</price> 
</book> 
<book category="CHILDREN"> 
 <title lang="en">Harry Potter</title> 
 <author>J K. Rowling</author> 
 <year>2005</year> 
 <price>29.99</price> 
</book> 
<book category="WEB"> 
 <title lang="en">Learning XML</title> 
 <author>Erik T. Ray</author> 
 <year>2003</year> 
 <price>39.95</price> 
</book> 
</bookstore>

結(jié)果:

category="COOKING"
Everyday Italian
lang="en"
Giada De Laurentiis
2005
30.00

category="CHILDREN"
Harry Potter
lang="en"
J K. Rowling
2005
29.99

category="WEB"
Learning XML
lang="en"
Erik T. Ray
2003
39.95

相關(guān)文章

  • SpringMVC請(qǐng)求/響應(yīng)亂碼問(wèn)題解決方案解析

    SpringMVC請(qǐng)求/響應(yīng)亂碼問(wèn)題解決方案解析

    這篇文章主要介紹了SpringMVC請(qǐng)求/響應(yīng)亂碼問(wèn)題解決方案解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • spring security登錄成功后通過(guò)Principal獲取名返回空問(wèn)題

    spring security登錄成功后通過(guò)Principal獲取名返回空問(wèn)題

    這篇文章主要介紹了spring security登錄成功后通過(guò)Principal獲取名返回空問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • java發(fā)送form-data請(qǐng)求實(shí)現(xiàn)文件上傳的示例代碼

    java發(fā)送form-data請(qǐng)求實(shí)現(xiàn)文件上傳的示例代碼

    最近做一個(gè)需求,需要請(qǐng)求第三方接口上傳文件,該請(qǐng)求類(lèi)型是form-data請(qǐng)求,本文就來(lái)介紹一下java發(fā)送form-data請(qǐng)求實(shí)現(xiàn)文件上傳的示例代碼,感興趣的可以了解一下
    2023-12-12
  • springboot log4j2不能打印框架錯(cuò)誤日志的解決方案

    springboot log4j2不能打印框架錯(cuò)誤日志的解決方案

    這篇文章主要介紹了springboot log4j2不能打印框架錯(cuò)誤日志的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot監(jiān)聽(tīng)器的實(shí)現(xiàn)示例

    SpringBoot監(jiān)聽(tīng)器的實(shí)現(xiàn)示例

    在SpringBoot中,你可以使用監(jiān)聽(tīng)器來(lái)響應(yīng)特定的事件,本文主要介紹了SpringBoot監(jiān)聽(tīng)器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • idea手動(dòng)刷新git分支的詳細(xì)教程

    idea手動(dòng)刷新git分支的詳細(xì)教程

    這篇文章主要介紹了idea手動(dòng)刷新git分支,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring注解中@Configuration和@Component到底有啥區(qū)別

    Spring注解中@Configuration和@Component到底有啥區(qū)別

    之前一直搞不清@Component和@Configuration這兩個(gè)注解到底有啥區(qū)別,一直認(rèn)為被這兩修飾的類(lèi)可以被Spring實(shí)例化嘛,最近終于弄明白了,這篇文章主要給大家介紹了關(guān)于Spring注解中@Configuration和@Component到底有啥區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 如何正確控制springboot中bean的加載順序小結(jié)篇

    如何正確控制springboot中bean的加載順序小結(jié)篇

    這篇文章主要介紹了如何正確控制springboot中bean的加載順序總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot如何正確配置并運(yùn)行Kafka

    SpringBoot如何正確配置并運(yùn)行Kafka

    這篇文章主要介紹了SpringBoot如何正確配置并運(yùn)行Kafka問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springmvc整合freemarker配置的詳細(xì)步驟

    springmvc整合freemarker配置的詳細(xì)步驟

    本篇文章主要介紹了springmvc整合freemarker的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05

最新評(píng)論

沾益县| 甘南县| 怀宁县| 万盛区| 瓦房店市| 成武县| 盐池县| 尉犁县| 洱源县| 易门县| 汾西县| 陇川县| 洪洞县| 芜湖县| 太谷县| 吉隆县| 郎溪县| 平陆县| 伊金霍洛旗| 陕西省| 龙南县| 清新县| 河北区| 弥勒县| 乌兰浩特市| 无为县| 黔南| 广饶县| 尖扎县| 上饶县| 榆树市| 香港| 永定县| 龙陵县| 苏州市| 齐河县| 孟州市| 莱阳市| 贡觉县| 永年县| 柞水县|