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

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

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

    Java, Only Java!

    統(tǒng)計(jì)

    留言簿(20)

    積分與排名

    好友空間

    文檔技巧

    閱讀排行榜

    評(píng)論排行榜

    Apusic對(duì)XML文件處理之分析(轉(zhuǎn)-請(qǐng)作者與我聯(lián)系)

    1 ?????????????? 前言

    本文闡述了 Apusic 對(duì) XML 文件處理的詳細(xì)分析,及其現(xiàn)有情況下 Apusic 對(duì) XML 文件解析存在的問題。

    2 ?????????????? Apusic 如何處理 XML 文件

    Apusic 服務(wù)器對(duì)于 XML 文件解析應(yīng)該分為兩種情況:一種 Apusic 需要加載的 XML 文件。如 :Apusic 的配置文件, J2EE 應(yīng)用的 web.xml,application.xml 文件等。另外一種是用戶代碼中使用 DocumentBuilderFactory SAXParserFactory 來解析自己的 XML 文件。對(duì)于上面兩種情況的 XML 文件, Apusic 是予以不同處理的。以下對(duì)此做具體說明。

    2.1 ???? 解析 Apusic 的配置文件及其 J2EE 應(yīng)用的 web.xml,application.xml…etc

    對(duì)于這一塊的解析,我們現(xiàn)在是采用自己的 XML 解析器來實(shí)現(xiàn)的,我們自己的 XML 解析器就是 com.apusic.xml.parsers com.apusic.xml.reader 下的相關(guān)類來處理的,和朱華明討論過,我們對(duì)于上述文件采用自己的解析器處理是存在優(yōu)勢的。因?yàn)槲覀儗?duì)這些文件的結(jié)構(gòu)很了解。效率應(yīng)該會(huì)高于任何第三方的 XML 解析器。但是我們的解析器可能也會(huì)存在一些不足的地方,對(duì)于一些復(fù)雜的 XML 結(jié)構(gòu)的處理可能會(huì)存在問題。由于考慮到效率問題,所以這一塊應(yīng)該不需要使用第三方的 XML 解析器,還是使用我們自己的解析器為好。

    2.2 ???? 用戶代碼中解析自己的 XML 文件

    用戶應(yīng)用程序使用 DocumentBuilderFactory, SAXParserFactory 對(duì)自己的 XML 解析時(shí),由于我們?cè)?/span> Apusic.jar 中,對(duì) META-INF/service/ 文件夾下設(shè)置了 javax.xml.parsers.DocumentBuilderFactory , javax.xml.parsers.SAXParserFactory 兩個(gè)屬性的值,并指向了 Xerces, 所以用戶在解析 XML 時(shí),缺省情況下使用的就是 Xerces API 進(jìn)行操作的。因此這一塊應(yīng)該是不會(huì)存在問題。

    至于設(shè)置此屬性后是如何利用 Xerces API 進(jìn)行解析 XML 的原理,當(dāng)你閱讀了 Java 相關(guān)源代碼后就可以明白。具體可以閱讀 javax.xml.parsers 包下的 DocumentBuilderFactory.class,SAXParserFactory.class 類的 newInstance 方法。

    3 ?????????????? 現(xiàn)存問題分析

    現(xiàn)在我們會(huì)遇到修改 Apusic 配置文件后, Apusic 無法啟動(dòng)的情況。這種情況主要是因?yàn)槲覀兪褂昧俗约旱?/span> XML 解析器。而我們的解析器在處理 UTF-8 編碼文件時(shí)存在問題,因?yàn)槲谋疚募谖募念^部存在 BOM? (Byte Order Mark) 標(biāo)識(shí) , 而這個(gè) BOM 標(biāo)識(shí)是用來表示文件的字節(jié)順序。對(duì)于不同編碼格式的文件存在不同的 BOM 標(biāo)識(shí) , 文件的 BOM 標(biāo)識(shí)規(guī)范可以參考下表(表 1 ),由于 UTF-8 文件不存在字節(jié)順序的問題,所以這個(gè)文件 BOM 標(biāo)識(shí)在 UTF-8 編碼方式下是可有可無的。而當(dāng)我們修改配置文件并保存后,如果存在 BOM 標(biāo)識(shí),我們的解析器就會(huì)出錯(cuò),不存在 BOM 標(biāo)識(shí)時(shí),我們的解析器就能夠正確工作。所以我們需要在解析 UTF-8 的時(shí)候,判斷頭部是否包含 UTF-8 BOM 標(biāo)識(shí),如果有就需要跳過去。代碼修改主要是在 XmlReader.java 文件中做如下處理:

    //skip UTF-8 BOM (byte order mark)

    if (count >= 3 && pos == 0){

    if (buffer[0] == (byte)0xEF &&

    buffer[1] == (byte)0xBB &&

    buffer[2] == (byte)0xBF){

    pos += 3;

    }

    }

    ?

    UTF-8

    EF BB BF

    UTF-16 Big Endian

    FE FF

    UTF-16 Little Endian

    FF FE

    UTF-32 Big Endian

    00 00 FE FF

    UTF-32 Little Endian

    FF FE 00 00

    ?

    ( 1)

    ?

    為什么我們對(duì) UTF-16,UTF-32 等編碼方式文件存在 BOM 標(biāo)識(shí)時(shí)沒有問題呢?其實(shí)這個(gè)問題應(yīng)該是 Java 的一個(gè) bug Java 的文本流在處理其他編碼方式的時(shí)候能夠很好的處理這個(gè) BOM 標(biāo)識(shí),但是對(duì)于 UTF-8 編碼時(shí)不能夠正確處理。該 bug 可以參考以下地址:

    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058

    ?

    posted on 2008-03-06 21:19 zYx.Tom 閱讀(995) 評(píng)論(2)  編輯  收藏

    評(píng)論

    # re: Apusic對(duì)XML文件處理之分析(轉(zhuǎn)-請(qǐng)作者與我聯(lián)系) 2008-03-07 09:53 dennis

    blogjava成了廣告宣傳地和轉(zhuǎn)帖集中地了?  回復(fù)  更多評(píng)論   

    # re: Apusic對(duì)XML文件處理之分析(轉(zhuǎn)-請(qǐng)作者與我聯(lián)系) 2008-03-07 11:06 朱遠(yuǎn)翔-Apusic技術(shù)顧問

    @dennis
    感謝你的批評(píng),我主要把這里做為Apusic相關(guān)技術(shù)的介紹地,不管是誰寫的,只要對(duì)大家有幫助我就轉(zhuǎn)過來了,如果作者不同意或者網(wǎng)站不允許,我會(huì)將他們?nèi)∠聛怼?nbsp; 回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91精品国产免费久久久久久青草| 国产亚洲精品自在久久| 99re6在线视频精品免费下载| 久久久久久亚洲精品无码| 亚洲乱码在线视频| 久久久亚洲精品国产| 亚洲深深色噜噜狠狠爱网站| 免费一级毛片一级毛片aa| 好爽…又高潮了毛片免费看| 青娱分类视频精品免费2| 免费国产污网站在线观看15| a级毛片在线免费| 91av免费在线视频| 九九九国产精品成人免费视频| 亚洲国产精品无码中文lv| 亚洲六月丁香六月婷婷色伊人| 99久久精品国产亚洲| 亚洲AV人无码综合在线观看| 国产精品亚洲а∨无码播放 | 亚洲xxxx18| 91亚洲国产成人久久精品| 亚洲视频在线免费播放| 久久亚洲精品无码AV红樱桃| 亚洲AV无码国产丝袜在线观看 | 一区二区三区在线免费| 窝窝影视午夜看片免费| 日本一区二区在线免费观看 | 免费吃奶摸下激烈视频| 四虎影永久在线高清免费| 全部免费国产潢色一级| 国产中文字幕免费观看| 五月天婷亚洲天综合网精品偷| 亚洲国产天堂久久久久久| 中文字幕日韩亚洲| 亚洲AV日韩AV永久无码下载| 亚洲男人都懂得羞羞网站| 亚洲精品自拍视频| 亚洲av无码片在线观看| 亚洲精品无码少妇30P| 美女无遮挡免费视频网站| 一区二区视频免费观看|