真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JDK6.0中StAX是什么

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

公司主營業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出欒城免費做網(wǎng)站回饋大家。

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家族當(dāng)中來,并將JAXP的版本升級到1.4(JAXP1.4是JAXP1.3的維護(hù)版本). JDK6里面JAXP的版本就是1.4.

StAX簡介

StAX是The Streaming API for XML的縮寫,一種利用拉模式解析(pull-parsing)XML文檔的API.StAX通過提供一種基于事件迭代器(Iterator)的API讓程序員去控制xml文檔解析過程,程序遍歷這個事件迭代器去處理每一個解析事件,解析事件可以看做是程序拉出來的,也就是程序促使解析器產(chǎn)生一個解析事件然后處理該事件,之后又促使解析器產(chǎn)生下一個解析事件,如此循環(huán)直到碰到文檔結(jié)束符;SAX也是基于事件處理xml文檔,但卻是用推模式解析,解析器解析完整個xml文檔后,才產(chǎn)生解析事件,然后推給程序去處理這些事件;DOM采用的方式是將整個xml文檔映射到一顆內(nèi)存樹,這樣就可以很容易地得到父節(jié)點和子結(jié)點以及兄弟節(jié)點的數(shù)據(jù),但如果文檔很大,將會嚴(yán)重影響性能。下面是這幾種API的比較(轉(zhuǎn)載自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()) { //如果解析的是起始標(biāo)記                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()) { //如果解析的是文本內(nèi)容
               parsingResult.append(event.asCharacters().getData());
           } else if(event.isEndElement()){ //如果解析的是結(jié)束標(biāo)記
               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"));

       // 寫入默認(rèn)的 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元素的結(jié)束標(biāo)簽
       xmlw.writeEndElement();
       // 寫入catalogs元素的結(jié)束標(biāo)簽
       xmlw.writeEndElement();
       // 結(jié)束 XML 文檔        xmlw.writeEndDocument();        
       xmlw.close();
   }
}http://blog.csdn.net/Chinajashhttp://blog.csdn.net/Chinajash

test.xml文件內(nèi)容如下:



   Book
   Video

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


   Book
   Video

運行上面程序后,產(chǎn)生的output.xml文件如下:


在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部