91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK6.0中StAX是什么

發布時間:2021-12-03 09:37:28 來源:億速云 閱讀:175 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“JDK6.0中StAX是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“JDK6.0中StAX是什么”這篇文章吧。

StAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一種處理XML文檔的API

StAX的來歷

在JAXP1.3(JSR 206)有兩種處理XML文檔的方法:DOM(Document Object Model)和SAX(Simple API for XML).由于JDK6.0中的JAXB2(JSR 222)和JAX-WS 2.0(JSR 224)都會用到StAX所以Sun決定把StAX加入到JAXP家族當中來,并將JAXP的版本升級到1.4(JAXP1.4是JAXP1.3的維護版本). JDK6里面JAXP的版本就是1.4.

StAX簡介

StAX是The Streaming API for XML的縮寫,一種利用拉模式解析(pull-parsing)XML文檔的API.StAX通過提供一種基于事件迭代器(Iterator)的API讓程序員去控制xml文檔解析過程,程序遍歷這個事件迭代器去處理每一個解析事件,解析事件可以看做是程序拉出來的,也就是程序促使解析器產生一個解析事件然后處理該事件,之后又促使解析器產生下一個解析事件,如此循環直到碰到文檔結束符;SAX也是基于事件處理xml文檔,但卻是用推模式解析,解析器解析完整個xml文檔后,才產生解析事件,然后推給程序去處理這些事件;DOM采用的方式是將整個xml文檔映射到一顆內存樹,這樣就可以很容易地得到父節點和子結點以及兄弟節點的數據,但如果文檔很大,將會嚴重影響性能。下面是這幾種API的比較(轉載自http://www.blogjava.net/hsith/archive/2006/06/29/55817.html)

XML Parser API Feature Summary

Feature

StAX

SAX

DOM

TrAX

API Type

Pull, streaming

Push, streaming

In memory tree

XSLT Rule

Ease of Use

High

Medium

High

Medium

XPath Capability

No

No

Yes

Yes

CPU and Memory Efficiency

Good

Good

Varies

Varies

Forward Only

Yes

Yes

No

No

Read XML

Yes

Yes

Yes

Yes

Write XML

Yes

No

Yes

Yes

Create, Read, Update, Delete

No

No

Yes

No

StAX代碼演示

下面代碼演示了如何通過StAX讀取xml文檔和生成xml文檔

public class StaxTester {
   public static void main(String[] args) throws XMLStreamException, FileNotFoundException {
       readXMLByStAX();//用XMLEventReader解析xml文檔
       writeXMLByStAX();//用XMLStreamWriter寫xml文檔
   }

   private static void readXMLByStAX() throws XMLStreamException, FileNotFoundException {
       XMLInputFactory xmlif = XMLInputFactory.newInstance();
       XMLEventReader xmler = xmlif.createXMLEventReader(StaxTester.class.getResourceAsStream("test.xml"));
       XMLEvent event;
       StringBuffer parsingResult = new StringBuffer();
       while (xmler.hasNext()) {
           event = xmler.nextEvent();            
           if (event.isStartElement()) { //如果解析的是起始標記                StartElement se = event.asStartElement();
               parsingResult.append("<");
               parsingResult.append(se.getName());
               if(se.getName().getLocalPart().equals("catalog")) {
                   parsingResult.append(" id="");
                   parsingResult.append(se.getAttributeByName(new QName("id")).getValue());
                   parsingResult.append(""");
               }
               parsingResult.append(">");
           } else if (event.isCharacters()) { //如果解析的是文本內容
               parsingResult.append(event.asCharacters().getData());
           } else if(event.isEndElement()){ //如果解析的是結束標記
               parsingResult.append("                parsingResult.append(event.asEndElement().getName());
               parsingResult.append(">");
           }
       }
       System.out.println(parsingResult);
   }

   private static void writeXMLByStAX() throws XMLStreamException, FileNotFoundException {
       XMLOutputFactory xmlof = XMLOutputFactory.newInstance();
       XMLStreamWriter xmlw = xmlof.createXMLStreamWriter(new FileOutputStream("output.xml"));

       // 寫入默認的 XML 聲明到xml文檔
       xmlw.writeStartDocument();
       xmlw.writeCharacters("n");
       // 寫入注釋到xml文檔
       xmlw.writeComment("testing comment");
       xmlw.writeCharacters("n");
       // 寫入一個catalogs根元素        xmlw.writeStartElement("catalogs");
       xmlw.writeNamespace("myNS", "
");
       xmlw.writeAttribute("owner","Chinajash");
       xmlw.writeCharacters("n");
       // 寫入子元素catalog
       xmlw.writeStartElement("
", "catalog");
       xmlw.writeAttribute("id","007");
       xmlw.writeCharacters("Apparel");
       // 寫入catalog元素的結束標簽
       xmlw.writeEndElement();
       // 寫入catalogs元素的結束標簽
       xmlw.writeEndElement();
       // 結束 XML 文檔        xmlw.writeEndDocument();        
       xmlw.close();
   }
}
http://blog.csdn.net/Chinajashhttp://blog.csdn.net/Chinajash

test.xml文件內容如下:



   Book
   Video

運行上面程序后,控制臺輸出如下:


   Book
   Video

運行上面程序后,產生的output.xml文件如下:


<!-- testing comment--&gt

   Apparel

以上是“JDK6.0中StAX是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐安县| 黑河市| 陇川县| 西乌珠穆沁旗| 寿阳县| 泰顺县| 精河县| 尼勒克县| 东莞市| 蛟河市| 雅江县| 高唐县| 泽库县| 林甸县| 泉州市| 天等县| 昆明市| 和顺县| 宁安市| 滕州市| 全南县| 菏泽市| 尉氏县| 平遥县| 天祝| 伊宁市| 白河县| 宜兰县| 留坝县| 沐川县| 微山县| 巴林左旗| 神池县| 日喀则市| 米易县| 洮南市| 清徐县| 五指山市| 绥棱县| 龙川县| 大关县|