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

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

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

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

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


下面來看一個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)文章

  • 詳解Struts2動態(tài)方法調(diào)用

    詳解Struts2動態(tài)方法調(diào)用

    這篇文章主要介紹了詳解Struts2動態(tài)方法調(diào)用,涉及調(diào)用方法的代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Spring Boot的Controller控制層和頁面

    Spring Boot的Controller控制層和頁面

    這篇文章主要介紹了Spring Boot的Controller控制層和頁面,需要的朋友可以參考下
    2017-04-04
  • java基礎(chǔ)檢查和未檢查異常處理詳解

    java基礎(chǔ)檢查和未檢查異常處理詳解

    這篇文章介紹了java基礎(chǔ)中異常的處理,主要講解了java檢查和未檢查異常處理的示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 多數(shù)據(jù)源模式JPA整合sharding-jdbc實現(xiàn)數(shù)據(jù)脫敏

    多數(shù)據(jù)源模式JPA整合sharding-jdbc實現(xiàn)數(shù)據(jù)脫敏

    這篇文章主要為大家介紹了JPA項目中多數(shù)據(jù)源模式整合sharding-jdbc來實現(xiàn)數(shù)據(jù)脫敏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • SpringBoot整合FreeMarker的過程詳解

    SpringBoot整合FreeMarker的過程詳解

    FreeMarker 是一個模板引擎,可以將模板與數(shù)據(jù)結(jié)合生成文本輸出,本文給大家介紹SpringBoot整合FreeMarker的過程,感興趣的朋友一起看看吧
    2024-01-01
  • Java ThreadLocal類應(yīng)用實戰(zhàn)案例分析

    Java ThreadLocal類應(yīng)用實戰(zhàn)案例分析

    這篇文章主要介紹了Java ThreadLocal類應(yīng)用,結(jié)合具體案例形式分析了java ThreadLocal類的功能、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09
  • SpringBoot整合Lucene實現(xiàn)全文檢索的詳細步驟

    SpringBoot整合Lucene實現(xiàn)全文檢索的詳細步驟

    全文搜索(Full-Text?Search)是指對大規(guī)模存儲在計算機系統(tǒng)中的文本數(shù)據(jù)進行檢索和匹配的技術(shù),它允許用戶輸入關(guān)鍵字,然后從海量的文本數(shù)據(jù)中快速找到相關(guān)的信息,本文介紹了SpringBoot整合Lucene實現(xiàn)全文檢索的詳細步驟,需要的朋友可以參考下
    2024-03-03
  • IDEA打包的兩種方式及注意事項說明

    IDEA打包的兩種方式及注意事項說明

    這篇文章主要介紹了IDEA打包的兩種方式及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 聊聊SpringBoot中組件無法被注入的問題

    聊聊SpringBoot中組件無法被注入的問題

    這篇文章主要介紹了SpringBoot中組件無法被注入的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java集合和數(shù)組的區(qū)別

    Java集合和數(shù)組的區(qū)別

    本文主要介紹了Java集合和數(shù)組的區(qū)別。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論