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

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

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

    posts - 43,comments - 75,trackbacks - 0

           一:xmlBean對(duì)開發(fā)人員來說是比較好的,因?yàn)樗蟠鬁p少開發(fā)人員的代碼量,但是也有一些不足之處。下面我們細(xì)細(xì)說來:
           二: xmlBean 從名字大家一般都能看出來,就是對(duì)xml文件的操作轉(zhuǎn)換成javaBean的方式進(jìn)行操作。
            
           三: 首先:在項(xiàng)目中我們一般都是先定義出xml文件的一個(gè)樣例,確定大家交換數(shù)據(jù)的xml格式,例如以下xml文件的樣式
                 <?xml version="1.0" encoding="UTF-8"?>
           <EBApp>
            <Head>
             <TaskID>dfjdk</TaskID>
             <DealCode>dfjd</DealCode>
             <DealContent>dfjdk</DealContent>
            </Head>
            <Body>
             <BatchNo>dfj</BatchNo>
             <BillNo>dfj</BillNo>
             <AccountResult>dfjdkfj</AccountResult>
            </Body>
           </EBApp>
               
            四:xml文件確定下來之后,然后就是對(duì)xml的解析,創(chuàng)建操作。在這里我們使用xmlBean對(duì)xml文件進(jìn)行操作。
            首先下載xmlBean(去google搜索,就知道到哪里下載了),下載之后解壓到任意目錄,
            在“我的計(jì)算機(jī)”--“高級(jí)”--“環(huán)境變量” 中配置XMLBEANS_HOME 指向你解壓的目錄。
              在PATH中 配置%XMLBEANS_HOME%\bin ,這樣xmlBean 的環(huán)境配置好了
           
           五: xmlBean需要xml文件的xsd。使用xmlSpy生成對(duì)應(yīng)xml文件的xsd文件
            cmsQueryDiscRele.xsd 內(nèi)容如下:
            <?xml version="1.0" encoding="UTF-8"?>
         <xs:schema elementFormDefault="qualified" targetNamespace="http://hermes.abc.com/elecbill/cms/discRele" xmlns:xs="http://www.w3.org/2001/XMLSchema">
          <xs:element name="EBApp">
           <xs:complexType>
            <xs:sequence>
             <xs:element name="Head">
              <xs:complexType>
               <xs:sequence>
                <xs:element name="TaskID" type="xs:string"/>
                <xs:element name="DealCode" type="xs:string"/>
                <xs:element name="DealContent" type="xs:string"/>
               </xs:sequence>
              </xs:complexType>
             </xs:element>
             <xs:element name="Body">
              <xs:complexType>
               <xs:sequence>
                <xs:element name="BatchNo" type="xs:string"/>
                <xs:element name="BillNo" type="xs:string"/>
                <xs:element name="AccountResult" type="xs:string"/>
               </xs:sequence>
              </xs:complexType>
             </xs:element>
            </xs:sequence>
           </xs:complexType>
          </xs:element>
         </xs:schema>
          “targetNamespace”,“elementFormDefault”這兩個(gè)attribute必須存在。并且elementFormDefault為qualified
          為什么要使用targetNamespace在后面將講到。
          
          六:有xsd文件之后就可以使用xmlBean工具了,將cmsQueryDiscRele.xsd放到d盤下(你可以自己放置到任意目錄下)
         
          在命令行中輸入 cd 到 d:\ 下
          然后 scomp -src build\src  -out build\her.jar cmsQueryDiscRele.xsd
                 -compiler D:\Java\jdk1.5\bin\javac
         這樣就生成her.jar文件了,her.jar就是對(duì)上面xml文件的javaBean映射了
        
         七:解析范例:
         EBAppDocument ad = EBAppDocument.Factory.parse(message);
          ad.getEBApp().getHead().getTaskID();
          ad.getEBApp().getHead().getDealCode());
          ad.getEBApp().getHead().getDealContent();
          ad.getEBApp().getBody().getBatchNo();
          ad.getEBApp().getBody().getBillNo();
         
          八:生成xml范例:
           EBAppDocument ebappd = EBAppDocument.Factory.newInstance();
           EBAppDocument.EBApp ebapp = ebappd.addNewEBApp();
           EBAppDocument.EBApp.Head head = ebapp.addNewHead();
           head.setTaskID("");
           head.setDealCode("");
           head.setDealContent("");
           EBAppDocument.EBApp.Body body = ebapp.addNewBody();
           body.setBatchNo("");
           body.setAccountResult("");
           body.setBillNo("");
           ebappd.xmlText();
           
           九:現(xiàn)在講講為什么要使用targetNamespace:在項(xiàng)目中我們定義的xml文件不可能就一種格式,
           而xmlBean將 xml文件映射到j(luò)avaBean時(shí),xml根節(jié)點(diǎn)就是Bean中最外層的Bean名稱,例如上面的xml文件
           根節(jié)點(diǎn)為 <EBApp>,對(duì)應(yīng)的為EBAppDocument 。而同一個(gè)項(xiàng)目的根節(jié)點(diǎn)一般都相同,只是里面的子節(jié)點(diǎn)在不
           斷的發(fā)生變化。那么如果沒有targetNamespace attribute,生成的EBAppDocument 就會(huì)重復(fù),所以我們只有
           通過包名進(jìn)行分類了,例如 a包下的EBAppDocument,b包下的EBAppDocument,targetNamespace就是生成包名結(jié)構(gòu)。
           
           十:另外在使用生成的EBAppDocument.Factory.parse,進(jìn)行解析xml文件時(shí),如果傳過來的xml文件中沒有xmlns
           attribute ,則解析也會(huì)有問題,不過xmlBean考慮了這個(gè)問題,可以使用如下操作
           XmlOptions op = new XmlOptions();
            Map map = new HashMap();
            map.put("", "http://hermes.abc.com/elecbill/cms/");
            map.put(oldNameSpace, nameSpace);
            op.setLoadSubstituteNamespaces(map);
           EBAppDocument.Factory.parse(XmlOptions op),
           這樣解析就沒問題了。
          
           十一:另外在生成xml時(shí),由于存在targetNamespace,生成的xml文件每個(gè)elements開頭都有一個(gè) "cms:", 這是
           targetNamespace 的縮寫,是取你targetNamespace的最后字符,如果想去掉這給可是使用xmlBean的方法
            XmlOptions op = new XmlOptions();
            op.setUseDefaultNamespace();
            ebappd.xmlText(op);
            這樣就可以了。

            十二:未解決問題、當(dāng)你在xsd中指定targetNamespace時(shí),在使用xmlBean生成的xml文件中會(huì)發(fā)現(xiàn)多了
           一個(gè) xmlns="http://hermes.abc.com/elecbill/cms/" attribute,而且這個(gè)attribute怎么也沒有辦法去掉
           (本人現(xiàn)在是沒辦法,如果有人知道,可以交流一下)。
    posted on 2010-01-18 16:15 夢源 閱讀(3708) 評(píng)論(4)  編輯  收藏

    FeedBack:
    # re: xmlBean 使用心得
    2010-01-18 20:49 | 咖啡妝
    建議用另外一款gastor 但是感覺這種工具不是很有必要 完全用dom解析也不錯(cuò) 呵呵  回復(fù)  更多評(píng)論
      
    # re: xmlBean 使用心得
    2010-01-20 18:26 | 來如風(fēng)
    xstream thoughtworks 出品  回復(fù)  更多評(píng)論
      
    # re: xmlBean 使用心得[未登錄]
    2010-08-03 16:56 | 5566
    很好 學(xué)習(xí)了  回復(fù)  更多評(píng)論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品公开免费视频| ww4545四虎永久免费地址| 亚洲av无码天堂一区二区三区| 亚洲不卡1卡2卡三卡2021麻豆| 国产成人福利免费视频| 亚洲视频免费一区| 1000部拍拍拍18勿入免费视频软件| 亚洲一区二区三区日本久久九| 四虎影视在线影院在线观看免费视频| 亚洲精品线在线观看| **一级毛片免费完整视| 在线综合亚洲中文精品| 在线A级毛片无码免费真人| 亚洲精品精华液一区二区 | 91亚洲自偷手机在线观看| 99在线热视频只有精品免费| 亚洲国产精品久久久久婷婷软件| 99蜜桃在线观看免费视频网站| 亚洲网站在线播放| 免费做爰猛烈吃奶摸视频在线观看| 亚洲国产午夜精品理论片在线播放 | 亚洲中文字幕成人在线| 91精品成人免费国产| 亚洲精品亚洲人成在线麻豆| 在线观看的免费网站| 免费精品国自产拍在线播放| 亚洲中文字幕无码久久综合网| 久久国产免费观看精品3| 亚洲精品免费网站| 亚洲精品国产精品乱码不卡| 久久久久免费看黄a级试看| 亚洲国产成人精品电影| 国产一区二区三区在线免费| baoyu122.永久免费视频| 精品久久久久久亚洲精品| 亚洲精品无码专区久久同性男| 久久免费视频精品| 亚洲大码熟女在线观看| 国产V亚洲V天堂无码久久久| 中文字幕影片免费在线观看| 一级做a爱片特黄在线观看免费看|