<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 劉錚 閱讀(595) 評論(0)  編輯  收藏 所屬分類: XML

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

    導航

    統計

    留言簿(1)

    文章分類(141)

    文章檔案(147)

    搜索

    最新評論

    主站蜘蛛池模板: 久久久受www免费人成| 18女人毛片水真多免费| 精品国产综合成人亚洲区| 91久久青青草原线免费| 亚洲人片在线观看天堂无码| 亚洲人成电影网站国产精品| 99久热只有精品视频免费看| 亚洲AV无码一区二区大桥未久| 久久久青草青青国产亚洲免观 | 国产国拍精品亚洲AV片| 91九色视频无限观看免费| 疯狂做受xxxx高潮视频免费| 亚洲男人第一av网站| 国产自产拍精品视频免费看| 黄色免费在线网站| 亚洲AV无码成人精品区狼人影院| 久久精品国产亚洲av成人| 女人与禽交视频免费看| 无码人妻一区二区三区免费n鬼沢| 四虎亚洲精品高清在线观看| 久久精品国产69国产精品亚洲| 巨胸喷奶水视频www网免费| 久久久精品免费国产四虎| 色噜噜的亚洲男人的天堂| 亚洲熟妇无码久久精品| 伊人亚洲综合青草青草久热| 免费无码又爽又刺激高潮的视频| 午夜不卡久久精品无码免费 | 亚洲福利视频一区二区三区| 亚洲国产成人五月综合网| 在线永久看片免费的视频| 国产一级a毛一级a看免费视频| 亚洲精品无码一区二区| 亚洲黄色网站视频| 亚洲欧洲美洲无码精品VA| 亚洲av无码成人精品区| 好男人看视频免费2019中文| 在线视频免费观看爽爽爽| 无码人妻久久一区二区三区免费| 中文在线免费不卡视频| 日韩免费在线中文字幕|