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

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

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

    隨筆:2 文章:0 評論:2 引用:0
    BlogJava 首頁 發(fā)新隨筆
    發(fā)新文章 聯(lián)系 聚合管理

    2007年2月8日

    本文主要講述的是Dom4j在把Document保存到文件過程中出現(xiàn)的一個中文問題,文中不足之處歡迎大家批評指教。
      Dom4j是一個比較優(yōu)秀的java開源xml解析項目,支持DOM,?SAX?and?JAXP.,并提供對XPath查詢語言的強大支持。因此,在EasyJF團隊的很多開源項目中,如EasyJWeb、EasyDBO等都是使用Dom4j來處理xml文件相關(guān)操作。
    ?
    1、從一個xml文件中載入一個Dom到內(nèi)存:
      FileInputStream?in?=?new?FileInputStream(new?File(fileName));
      SAXReader?reader?=?new?SAXReader();
      doc?=?reader.read(in);
    2、把Dom中的數(shù)據(jù)寫入到xml文件中
      使用Dom4j,要把一個Dom中的數(shù)據(jù)寫入到文件非常簡單,API如下:
      ?public?void?write(Writer?writer)?throws?IOException;
      因此,假如我們要把一個Document寫入到c:\test.xml文件中,可以簡單的使用下面的代碼即可:
    ??????? java.io.Writer?wr=?new?java.io.FileWrite(filename);
      doc.write(wr);
    ??????? wr.close();//注意,必須要執(zhí)行close()方法,才會實現(xiàn)真正的寫入
      
      這種用法也是Dom4j所推薦我們使用的非常簡單的方法。然而,當我們的dom中包含有中文字符數(shù)據(jù)的時候,這種方法寫入的xml文檔卻無法使直覺打開。會提示類似如下的錯誤:
      ?org.dom4j.DocumentException:?invalid?byte?1?of?1-byte?UTF-8?sequence?(0xb2)?Nested?exception:?invalid?byte?1?of?1-byte?UTF-8?sequence?(0xb2)
    ?at?org.dom4j.io.SAXReader.read(SAXReader.java:484)
    ?at?org.dom4j.io.SAXReader.read(SAXReader.java:343)
    ?at?
      我們可以看生成的xml文件編碼,內(nèi)容是utf-8的,但文件格式確是ANSI的,如下圖所示:

    ?
    原因分析:
      由于FileWriter默認的輸出編碼是ANSI編碼,而Dom4j中的wirte方法提供的內(nèi)容實際是以UTF-8保存的,因此造成了包括中文字符的XML文件無法正常閱讀。
    ?
    解決方法:
    ?  不能使用簡單的FileWriter,而應該是使用一個能指定具體輸出編碼的Writer,在JDK的io包中,?OutputStreamWriter可以指定輸出編碼。
      正確的代碼如下:
    ??? java.io.OutputStream?out=new?java.io.FileOutputStream(fileName);
    ???java.io.Writer?wr=new?java.io.OutputStreamWriter(out,"UTF-8");???
    ???doc.write(wr);???
    ???wr.close();
    ???out.close();

      簡化一下可以寫成下面的樣式:

    ?? java.io.Writer?wr=new?java.io.OutputStreamWriter(new?java.io.FileOutputStream(fileName),"UTF-8");???
    ???doc.write(wr);???
    ???wr.close();

    小結(jié):
      由于大多數(shù)優(yōu)秀的基礎(chǔ)性開源項目都是老外開發(fā),他們不大可能在中文平臺下進行測試,用例數(shù)據(jù)也很少會使用中文平臺,因此,我們即使按照這些開源項目的通用說明文檔及用戶指南去操作,也會出現(xiàn)很多不可預知的錯誤。這也是為什么本人要參與組建開源團隊EasyJF,提倡搞國產(chǎn)開源,并開發(fā)一些基礎(chǔ)性的開源框架如EasyJWeb、EasyDBO的一個初衷。
      當然,這里提出的中文問題,算是一個還“沒來得及商量”以及要通過一些罕見的處理才能正確運行的中文問題。因此,同樣歸并到了“中文問題沒商量”系列中。

    (注:本文作者,EasyJF開源團隊 大峽,轉(zhuǎn)載請保留作者聲明!)
    posted @ 2007-02-08 15:03 shakebaby 閱讀(1043) | 評論 (1)編輯 收藏

    2007年1月27日

    Service Component Architecture(SCA) 是一組標準,描述了一個通過SOA構(gòu)建應用系統(tǒng)的模型。SCA擴展并補充了之前服務實現(xiàn)的方法,構(gòu)建在一些開放的標準之上,比如Web Services。

    SCA提倡基于SOA的業(yè)務應用能夠用組件(component)的形式來實現(xiàn)業(yè)務邏輯,這些組件通過面向服務的接口提供功能(服務),或者使用別的組件通過面向服務的接口提供的功能,即服務引用(Service references)。SCA將構(gòu)建一個SOA的應用切分為兩個主要步驟:
    ?1.服務組件的實現(xiàn):提供或者使用(consume)服務;
    ?2.服務組件的組裝:用來構(gòu)建完整的業(yè)務應用,通過連接服務引用與服務(Through the wiring ??? of service reference to services)。
    Figure 1. Service Component Architecture

    Service Component Architecture

    SCA服務的實現(xiàn)支持使用多種的編程語言,既包括傳統(tǒng)的面向?qū)ο蠡蜻^程的語言,如:Java,PHP,C++,COBOL,以XML為核心的BPEL,XSLT等,又包括一些聲明語言(declarative language)如:SQL和XQuery。SCA同樣支持異步的和面向消息的調(diào)用以及同步的調(diào)用返回模式。

    SCA支持綁定(Bindings)一組訪問機制用來調(diào)用服務,包括Web Services,Messaging Systems 和 CORBA IIOP,Bindings 是聲明式的(are handled declarativly)獨立于實現(xiàn)代碼,SCA通過使用策略定義了基礎(chǔ)功能的使用,目的是為了更方便的應用到業(yè)務系統(tǒng)。

    SCA提倡使用Service Data Object(SDO)來表示服務中使用或返回的業(yè)務數(shù)據(jù),提供對業(yè)務數(shù)據(jù)統(tǒng)一的訪問來滿足對SCA自己提供的業(yè)務服務的統(tǒng)一訪問。

    SCA規(guī)范由許多文檔共同描述,每一文檔描述SCA中的一個方面。裝配模型(Assembly Model)描述了組件間的配線連接。裝配模型獨立于實現(xiàn)語言??蛻舳撕蛯崿F(xiàn) 描述了服務的實現(xiàn)和服務客戶端—— 每一種實現(xiàn)語言有其自己的客戶端和針對該語言的SCA模型實現(xiàn)規(guī)范。

    原文

    posted @ 2007-01-27 18:35 shakebaby 閱讀(309) | 評論 (1)編輯 收藏
    CALENDER
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜


    Powered By: 博客園
    模板提供滬江博客

    主站蜘蛛池模板: 亚洲一区二区三区在线观看蜜桃 | 国产精品冒白浆免费视频| 久久久无码精品亚洲日韩京东传媒| aa级毛片毛片免费观看久| 亚洲色无码一区二区三区| 国产又黄又爽胸又大免费视频 | WWW免费视频在线观看播放| 人人狠狠综合久久亚洲婷婷| a国产成人免费视频| 91亚洲国产在人线播放午夜| 亚洲高清免费在线观看| 亚洲首页国产精品丝袜| 毛片在线免费视频| 小说区亚洲自拍另类| 亚洲欧洲久久久精品| 中文字幕在线免费视频| 亚洲精品韩国美女在线| 无码免费午夜福利片在线 | 亚洲VA中文字幕无码一二三区| 一区二区三区四区免费视频| 亚洲国产综合自在线另类| 日本黄页网站免费| 一区二区视频在线免费观看| 久久精品国产亚洲一区二区| 日本黄网站动漫视频免费| 亚洲精华国产精华精华液好用 | 国产乱色精品成人免费视频 | 亚洲色中文字幕无码AV| 国产福利视精品永久免费| 亚洲av成人一区二区三区在线播放 | 国产成人精品免费久久久久| 久久狠狠爱亚洲综合影院| 免费v片视频在线观看视频| 免费福利电影在线观看| 亚洲香蕉久久一区二区三区四区| 四虎1515hm免费国产| 97免费人妻在线视频| 理论亚洲区美一区二区三区| 亚洲avav天堂av在线不卡| 国产jizzjizz视频全部免费| 国产在线精品免费aaa片|