javaxml解析,javaxml解析的實際用處

本文目錄一覽:

在java中解析xml有哪幾種方法

(1)DOM解析

DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取

和操作文檔的任意部分,是W3C的官方標準

【優點】

①允許應用程序對數據和結構做出更改。

②訪問是雙向的,可以在任何時候在樹中上下導航,獲取和操作任意部分的數據。

【缺點】

①通常需要載入整個XML文檔來構造層次結構,消耗資源大。

【解析詳解】

①構建Document對象:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = bdf.newDocumentBuilder();

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(xml文件);

Document doc = bd.parse(is);

②遍歷DOM對象

Document: XML文檔對象,由解析器獲取

NodeList: 節點數組

Node: 節點(包括element、#text)

Element: 元素,可用於獲取屬性參數

(2)SAX(Simple API for XML)解析

流模型中的”推”模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法

完成解析工作,解析XML文檔的邏輯需要應用程序完成

【優勢】

①不需要等待所有數據都被處理,分析就能立即開始。

②只在讀取數據時檢查數據,不需要保存在內存中。

③可以在某個條件得到滿足時停止解析,不必解析整個文檔。

④效率和性能較高,能解析大於系統內存的文檔。

【缺點】

①需要應用程序自己負責TAG的處理邏輯(例如維護父/子關係等),文檔越複雜程序就越複雜。

②單嚮導航,無法定位文檔層次,很難同時訪問同一文檔的不同部分數據,不支持XPath。

【原理】

簡單的說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束時通知事件

處理函數(回調函數),進行相應處理,直到文檔結束

【事件處理器類型】

①訪問XML DTD:DTDHandler

②低級訪問解析錯誤:ErrorHandler

③訪問文檔內容:ContextHandler

【DefaultHandler類】

SAX事件處理程序的默認基類,實現了DTDHandler、ErrorHandler、ContextHandler和EntityResolver介面,通常

做法是,繼承該基類,重寫需要的方法,如startDocument()

【創建SAX解析器】

SAXParserFactory saxf = SAXParserFactory.newInstance();

SAXParser sax = saxf.newSAXParser();

註:關於遍歷

①深度優先遍歷(Depthi-First Traserval)

②廣度優先遍歷(Width-First Traserval)

(3)JDOM(Java-based Document Object Model)

Java特定的文檔對象模型。自身不包含解析器,使用SAX

【優點】

①使用具體類而不是介面,簡化了DOM的API。

②大量使用了Java集合類,方便了Java開發人員。

【缺點】

①沒有較好的靈活性。

②性能較差。

(4)DOM4J(Document Object Model for Java)

簡單易用,採用Java集合框架,並完全支持DOM、SAX和JAXP

【優點】

①大量使用了Java集合類,方便Java開發人員,同時提供一些提高性能的替代方法。

②支持XPath。

③有很好的性能。

【缺點】

①大量使用了介面,API較為複雜。

(5)StAX(Streaming API for XML)

流模型中的拉模型分析方式。提供基於指針和基於迭代器兩種方式的支持,JDK1.6新特性

【和推式解析相比的優點】

①在拉式解析中,事件是由解析應用產生的,因此拉式解析中向客戶端提供的是解析規則,而不是解析器。

②同推式解析相比,拉式解析的代碼更簡單,而且不用那麼多庫。

③拉式解析客戶端能夠一次讀取多個XML文件。

④拉式解析允許你過濾XML文件和跳過解析事件。

【簡介】

StAX API的實現是使用了Java Web服務開發(JWSDP)1.6,並結合了Sun Java流式XML分析器(SJSXP)-它位於

javax.xml.stream包中。XMLStreamReader介面用於分析一個XML文檔,而XMLStreamWriter介面用於生成一個

XML文檔。XMLEventReader負責使用一個對象事件迭代子分析XML事件-這與XMLStreamReader所使用的游標機制

形成對照。

java解析xml的幾種方式哪種最好?

(1)DOM解析

DOM是html和xml的應用程序介面(API),以層次結構(類似於樹型)來組織節點和信息片段,映射XML文檔的結構,允許獲取;

(2)SAX(Simple API for XML)解析

流模型中的”推”模型分析方式。通過事件驅動,每發現一個節點就引發一個事件,事件推給事件處理器,通過回調方法;

(1)、dom解析

dom解析是html和xml的應用程序介面(api) 以層次結構(類似與樹形)來組織節點 和信息片段 映射xml文檔的結構 允許獲取和操作文檔的任意部分 是官方標準

(2)、sax解析

流模型中in個的 推 模型 分析方式 通過事件驅動 沒發現一個節點就引發一個事件 事件推給事件處理期 遍歷回調方法

(3)、stax

流模型中的拉模型分析方式 提供基於指針和基於迭代器兩種方式 的支持1.6新特徵

(4)、jdom

java特定的文檔對象模型 自身不包含解析器 使用sax

(5)、jdom4j

簡單易用 採用java集合框架 兵完全支持dom sax 和jaxp

java怎麼解析xml文件?

String xml=”xmlToUserName![CDATA[toUser]]/ToUserName”

+”FromUserName![CDATA[fromUser]]/FromUserName”

+”CreateTime12345678/CreateTime”

+”MsgType![CDATA[text]]/MsgType”

+”Content![CDATA[你好]]/Content/xml”;

try {

//載入xml字元串

org.dom4j.Document document=org.dom4j.DocumentHelper.parseText(xml);

//獲取根節點

org.dom4j.Element root=document.getRootElement();

//獲取值  ==toUser

String toUserName=root.elementText(“ToUserName”);

System.out.println(toUserName);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

原創文章,作者:CSXB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144365.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CSXB的頭像CSXB
上一篇 2024-10-25 13:54
下一篇 2024-10-25 13:54

相關推薦

  • javaxml轉json

    一、XML和JSON的比較 XML和JSON都是用來存儲和傳輸數據的格式,但它們在語法和結構上有很大的差異。XML是一種標記語言,它使用標籤來表示元素和屬性,每個標記都必須有一個結…

    編程 2025-01-20
  • 包含python生成器迭代實際案例的詞條

    本文目錄一覽: 1、python 迭代器和生成器的區別 2、python 如何使用生成器函數實現可迭代對象 3、Python中的「迭代」詳解 4、如何更好地理解Python迭代器和…

    編程 2025-01-16
  • phpeol有什麼用處,php作用是什麼

    本文目錄一覽: 1、php有什麼用處 2、php中如何換行 3、php 字元串如何去除\r\t標籤 4、php,我想把資料庫內容做成json格式,數據有換行符,去掉換行符輸出後檢測…

    編程 2025-01-14
  • mysql資料庫的特點及用處,mysql資料庫的特點和特性

    本文目錄一覽: 1、MYSQL資料庫的作用是什麼 2、mysql具體有什麼用 3、mysql的特點是什麼? 4、MySQL的優點? 5、資料庫系統的特點 6、mysql主要技術特點…

    編程 2025-01-11
  • java用處,java類的作用是什麼

    本文目錄一覽: 1、學習JAVA有什麼作用? 2、java有哪些用途,發展前景怎樣? 3、JAVA語言到底有哪些方面的用途? 4、JAVA的主要用途是哪個方面 5、java有什麼作…

    編程 2025-01-06
  • Java函數式介面實際使用

    一、函數式介面的定義 函數式介面是指只包含一個抽象方法的介面。在Java8之前,Java介面只能包含靜態常量和抽象方法。而從Java8開始,Java增加了新特性lambda表達式,…

    編程 2025-01-02
  • java有什麼用,java有啥用處

    本文目錄一覽: 1、java語言能做什麼用? 2、JAVA主要是用來幹什麼的呢? 3、學Java有什麼用? java語言能做什麼用? Java是目前主流的編程語言之一,如果學會Ja…

    編程 2024-12-31
  • php inarray函數的用法和實際場景解析

    一、inarray函數簡介 PHP中的in_array函數用於在數組中查找指定的值,並返回一個布爾值。第一個參數是要查找的值,第二個參數是數組。 in_array函數的語法如下: …

    編程 2024-12-24
  • 由java實際編程中(java就是編程嗎)

    本文目錄一覽: 1、Java編程中,你經常遇到的異常有哪些?場景如何? 2、Java中位運算符的具體應用是什麼,在實際編程中有什麼作用 3、JAVA編程中常見的錯誤有哪些 4、線程…

    編程 2024-12-22
  • java消息摘要用處,論述消息摘要及應用

    本文目錄一覽: 1、1.1 信息摘要演算法簡介 2、基於java語言的數字簽名 3、用JAVA程序實現消息摘要演算法,並生成一個數的消息摘要 4、我系統有一個功能,java寫的,提供一…

    編程 2024-12-22

發表回復

登錄後才能評論