<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    使用stax解析xml

    StAX 框架(Streaming API for XML)

    SAX 框架的缺點是不能記錄正在處理元素的上下文。但是優點是運行時占內存空間比較小,效率高。DOM 框架由于在處理 XML 時需要為其構造一棵樹,所以特點正好相反。StAX 框架出現于 Java SE 6 中,它的設計目標就是要結合 SAX 框架和 DOM 框架的優點。既要求運行時效率,也要求保持元素的上下文狀態。清單 5 是一段使用 StAX 框架處理 XML 文件的代碼。


    清單 5. 使用 StAX 框架處理 XML 文件
                import java.io.*;
                import javax.xml.stream.*;
                import javax.xml.stream.events.*;
                public class StAXTest {
                public static void main(String[] args) {
                XMLInputFactory inputFactory = XMLInputFactory.newInstance();
                InputStream input = new ByteArrayInputStream(
                ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<work-contact-info>" +
                "<Location>Shanghai-shuion-333</Location>" +
                "<Postal>200020</Postal>" +
                "<Tel><fix>63262299</fix><mobile>1581344454</mobile></Tel>" +
                "<Appellation>Mr. Wang</Appellation>" +
                "</work-contact-info>").getBytes());
                try {
                XMLEventReader xmlEventReader = inputFactory.createXMLEventReader(input);
                while (xmlEventReader.hasNext()) {
                XMLEvent event = xmlEventReader.nextEvent();
                if (event.isStartElement()) {
                StartElement startElement = event.asStartElement();
                System.out.println(startElement.getName().toString());
                }
                if (event.isCharacters()) {
                Characters text = event.asCharacters();
                if (!text.isWhiteSpace()) {
                System.out.println("\t" + text.getData());
                }
                }
                }
                } catch (XMLStreamException e) {
                e.printStackTrace();
                }
                }
                }
                

    觀察后可以發現 StAX 框架和 SAX 框架具有相似的地方。StAX 有 Event.isStartElement 方法,SAX 有 DefaultHandler.startElement 方法。StAX 有 Event.isCharacter 方法,SAX 有 DefaultHandler.character 方法。實際上這兩個框架處理 XML 文件的時候使用了相似的模型——將 XML 文件作為元素組成的流,而不同于 DOM 的樹模型。解析 XML 文件時,應用程序調用 XMLEventReadernextEvent 方法解析下一個元素(或者是解析同一個元素,根據解析的不同階段,產生不同元素),StAX 就會通過 XMLEventReader 產生一個事件。比如針對同一個元素,可能會產生 StartElementEndElement 事件。形象的說 XMLEventReader 就像是一根繩子,拽一下,解析一個元素,產生一個事件。于是這種技術也被稱為”Pull Parser”技術。StAX 在處理 XML 文件時,產生的所有事件是通過一個 IteratorXMLEventReader 繼承了 Iterator)返回的。應用程序通過這個 Iterator 能知道某個解析事件的前后分別是什么。這類信息就是一個元素的上下文信息。

    posted on 2007-12-04 11:43 劉錚 閱讀(597) 評論(0)  編輯  收藏 所屬分類: XML

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿(1)

    文章分類(141)

    文章檔案(147)

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲中文字幕一二三四区| 久久久久亚洲av无码尤物| 免费无码又爽又刺激高潮的视频| 久久久久国色AV免费观看性色| 日韩伦理片电影在线免费观看| 亚洲一级特黄无码片| 国产精品亚洲成在人线| 亚洲伊人久久大香线蕉AV| 美女视频黄免费亚洲| 国产亚洲人成A在线V网站| 亚洲AV无码成人专区| 欧洲美女大片免费播放器视频| 亚洲精品免费在线观看| 色妞WWW精品免费视频| 蜜芽亚洲av无码一区二区三区| 久艹视频在线免费观看| 国产一级理论免费版| 久久亚洲一区二区| 久久WWW免费人成一看片| 亚洲AV中文无码乱人伦在线视色| 亚洲AV无码久久寂寞少妇| 三级片免费观看久久| 永久免费av无码网站韩国毛片 | 成人免费视频一区二区三区| 亚洲精品无码久久久久sm| 污污网站免费观看| 亚洲熟妇av午夜无码不卡| 亚洲精品第一国产综合精品99| 亚洲精品无码少妇30P| 在线观看免费人成视频| 国产精品日本亚洲777| 成人黄18免费视频| 高清免费久久午夜精品| 亚洲欧洲免费视频| 无码A级毛片免费视频内谢| 亚洲国产91在线| 搡女人真爽免费视频大全| 精品无码一级毛片免费视频观看| 在线观看91精品国产不卡免费| aaa毛片免费观看| 久久久久亚洲国产|