锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲Av高清一区二区三区,久99精品视频在线观看婷亚洲片国产一区一级在线 ,无码天堂亚洲国产AVhttp://m.tkk7.com/lcs/category/26137.html榛戞殫鐨凷H錛佺伆鏆楃殑浜虹敓錛佽瘉鏄庝簡鎴戠殑蹇冧腑榪樻湁涓浜涘厜鏄庯紒 zh-cnThu, 14 Feb 2008 08:28:24 GMTThu, 14 Feb 2008 08:28:24 GMT60鍦↗ava涓啓鏂囦歡鐨勪腑鏂囬棶棰榌杞琞http://m.tkk7.com/lcs/archive/2008/02/14/179922.htmllklkThu, 14 Feb 2008 06:20:00 GMThttp://m.tkk7.com/lcs/archive/2008/02/14/179922.htmlhttp://m.tkk7.com/lcs/comments/179922.htmlhttp://m.tkk7.com/lcs/archive/2008/02/14/179922.html#Feedback0http://m.tkk7.com/lcs/comments/commentRss/179922.htmlhttp://m.tkk7.com/lcs/services/trackbacks/179922.html鍐欏嚭鏉ョ殑鏂囦歡鐢ㄦ祻瑙堝櫒鎵撳紑鍚庨兘鏄貢鐮併傚凡緇忓湪XML鐨勬渶鍓嶉潰鍔犱笂浜?br /> <?xml version="1.0" encoding="UTF-8"?>
鑰屼笖嫻忚鍣ㄧ殑緙栫爜涔熸槸UTF-8鐨勶紝榪欏氨鎺掗櫎浜嗘祻瑙堝櫒鐨勯棶棰樸?br /> 鍐嶇敤VIM鎵撳紑錛屽彂鐜扮敤GB2312鐪嬫槸娌¢棶棰樼殑錛屾崲鎴?set encoding=UTF-8浠ュ悗寮濮嬩貢鐮?br /> 榪欐椂鎴戝皾璇曞皢瀛楃涓茶漿鐮佸悗鍐欏叆鏂囦歡錛屼絾鍦║TF-8錛孏BK鍜孖SO8859_1涓棿鎬庝箞杞篃娌℃湁鐢ㄣ?br /> 蹇界劧鎯寵搗鍓嶅嚑澶﹜iyayoyo鍚屽鍜屾垜鎻愯繃Java鍐欐枃浠墮粯璁ょ紪鐮佺殑闂錛屼簬鏄紑濮媑oogle錛屽彂鐜版垜鐢ㄧ殑鍐欐枃浠剁殑鏂瑰紡鏃犳硶鎸囧畾緙栫爜錛屼簬鏄崲鐢ㄥ彟涓縐嶅啓鏂囦歡鐨勬柟寮忔寚瀹歎TF-8錛岄亗鎼炲畾銆備唬鐮佸涓嬶細

鑰佷唬鐮侊細
PrintWriter pw = new PrintWriter(new FileWriter(path));
pw.print(content);
pw.close();

鏂頒唬鐮侊細
FileOutputStream fos = new FileOutputStream(path);
Writer out = new OutputStreamWriter(fos, "UTF-8");
out.write(content);
out.close();
fos.close();

欏轟究鎶辨ㄤ竴鍙ワ紝Java涓啓鏂囦歡鐨勬柟寮忚繕鐪熸槸澶氶樋澶?#8230;…鎴戠瓑涓涓ゅ勾緇忛獙鐨勫皬紼嬪簭鍛樼湅浜嗛兘鐪兼檿

   搴撳崱 璇達細
  璇諱唬鐮佷篃鏈夌紪鐮佺殑闂錛屽鏋滆璇誨彇UTF-8鐨勬枃浠訛紝搴旈噰鐢ㄥ涓嬫柟寮忚鐩栭粯璁ょ紪鐮侊細
  FileInputStream fis = new FileInputStream(s);
  StringBuffer content = new StringBuffer();
  DataInputStream in = new DataInputStream(fis);
  BufferedReader d = new BufferedReader(new InputStreamReader(in, "UTF-8"));
  String line = null;
   while ((line = d.readLine()) != null)
                      content.append(line + "\n");
  d.close();
  in.close();
  fis.close();



lk 2008-02-14 14:20 鍙戣〃璇勮
]]>
鍒╃敤XMLBean杞昏交鏉炬澗璇誨啓XML http://m.tkk7.com/lcs/archive/2007/11/22/162316.htmllklkThu, 22 Nov 2007 03:08:00 GMThttp://m.tkk7.com/lcs/archive/2007/11/22/162316.htmlhttp://m.tkk7.com/lcs/comments/162316.htmlhttp://m.tkk7.com/lcs/archive/2007/11/22/162316.html#Feedback1http://m.tkk7.com/lcs/comments/commentRss/162316.htmlhttp://m.tkk7.com/lcs/services/trackbacks/162316.html 

鍒╃敤XMLBean杞昏交鏉炬澗璇誨啓XML

浣滆咃細鍙舵灚




鐗堟潈澹版槑錛氭湰鏂囧彲浠ヨ嚜鐢辮漿杞斤紝杞澆鏃惰鍔″繀浠ヨ秴閾炬帴褰㈠紡鏍囨槑鏂囩珷鍘熷鍑哄鍜屼綔鑰呬俊鎭強鏈0鏄?/span>
浣滆?鍙舵灚(http://blog.matrix.org.cn/page/鍙舵灚)
鍘熸枃:[http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html]http://www.matrix.org.cn/resource/article/44/44027_XMLBean.html[/url]
鍏抽敭瀛?XML XMLBean Parser

涓銆佸叧浜嶺ML瑙f瀽

  XML鍦↗ava搴旂敤紼嬪簭閲屽彉寰楄秺鏉ヨ秺閲嶈, 騫挎硾搴旂敤浜庢暟鎹瓨鍌ㄥ拰
浜ゆ崲. 姣斿鎴戜滑甯歌鐨勯厤緗枃浠?閮芥槸浠ML鏂瑰紡瀛樺偍鐨? XML榪樺簲鐢?br /> 浜嶫ava Message Service鍜學eb Services絳夋妧鏈綔涓烘暟鎹氦鎹?
鍥犳,姝g‘璇誨啓XML鏂囨。鏄疿ML搴旂敤鐨勫熀紜.
  Java鎻愪緵浜哠AX鍜孌OM涓ょ鏂瑰紡鐢ㄤ簬瑙f瀽XML,浣嗗嵆渚垮姝?瑕佽鍐欎竴涓?br /> 紼嶅井澶嶆潅鐨刋ML,涔熶笉鏄竴浠跺鏄撶殑浜?

浜屻乆MLBean綆浠?/span>

    Hibernate宸茬粡鎴愪負鐩墠嫻佽鐨勯潰鍚慗ava鐜鐨勫璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏?
鍦℉ibernate絳夊璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏峰嚭鐜頒箣鍓?瀵規(guī)暟鎹簱鐨勬搷浣滄槸
閫氳繃JDBC鏉ュ疄鐜扮殑,瀵規(guī)暟鎹簱鐨勪換浣曟搷浣?寮鍙戜漢鍛橀兘瑕佽嚜宸卞啓SQL璇彞
鏉ュ疄鐜? 瀵硅薄/鍏崇郴鏁版嵁搴撴槧灝勫伐鍏峰嚭鐜板悗,瀵規(guī)暟鎹簱鐨勬搷浣滆漿鎴愬
JavaBean鐨勬搷浣?鏋佸ぇ鏂逛究浜嗘暟鎹簱寮鍙? 鎵浠ュ鏋滄湁涓涓被浼肩殑宸ュ叿鑳藉
瀹炵幇灝嗗XML鐨勮鍐欒漿鎴愬JavaBean鐨勬搷浣?灝嗕細綆鍖朮ML鐨勮鍐?鍗充嬌瀵筙ML
涓嶇啛鎮(zhèn)夌殑寮鍙戜漢鍛樹篃鑳芥柟渚垮湴璇誨啓XML. 榪欎釜宸ュ叿灝辨槸XMLBean.

涓夈佸噯澶嘪MLBean鍜孹ML鏂囨。

   XMLBean鏄疉pache鐨勪竴涓紑婧愰」鐩?鍙互浠巋ttp://www.apache.org涓嬭澆,
鏈鏂扮殑鐗堟湰鏄?.0. 瑙e帇鍚庣洰褰曞涓?
xmlbean2.0.0
     +---bin
     +---docs
     +---lib
     +---samples
     +---schemas


鍙﹀榪樿鍑嗗涓涓猉ML鏂囨。(customers.xml),
鍦ㄦ湰鏂囩殑渚嬪瓙閲?鎴戜滑灝嗗榪欎釜鏂囨。榪涜璇誨啓鎿嶄綔. 鏂囨。婧愮爜濡備笅:

<?xml version="1.0" encoding="UTF-8"?>
<Customers>
    <customer>
            <id>1</id>
            <gender>female</gender>
            <firstname>Jessica</firstname>
            <lastname>Lim</lastname>
            <phoneNumber>1234567</phoneNumber>
            <address>
                <primaryAddress>
                        <postalCode>350106</postalCode>
                        <addressLine1>#25-1</addressLine1>
                        <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
                </primaryAddress>
                <billingAddress>
                        <receiver>Ms Danielle</receiver>
                        <postalCode>350107</postalCode>
                        <addressLine1>#167</addressLine1>
                        <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
                </billingAddress>
            </address>
    </customer>
    <customer>
            <id>2</id>
            <gender>male</gender>
            <firstname>David</firstname>
            <lastname>Bill</lastname>
            <phoneNumber>808182</phoneNumber>
            <address>
                <primaryAddress>
                        <postalCode>319087</postalCode>
                        <addressLine1>1033 WS St.</addressLine1>
                        <addressLine2>Tima Road</addressLine2>
                </primaryAddress>
                <billingAddress>
                        <receiver>Mr William</receiver>
                        <postalCode>672993</postalCode>
                        <addressLine1>1033 WS St.</addressLine1>
                        <addressLine2>Tima Road</addressLine2>
                </billingAddress>
            </address>
    </customer>
</Customers>


榪欐槸涓涓鎴風殑鏁版嵁妯″瀷,姣忎釜瀹㈡埛閮芥湁瀹㈡埛緙栧彿(ID),濮撳悕,鎬у埆(gender),
鐢?shù)璇濆忥L爜(phoneNumber)鍜屽湴鍧,鍏朵腑鍦板潃鏈変袱涓? 棣栬鍦板潃(PrimaryAddress)
鍜屽笎鍗曞湴鍧(BillingAddress),姣忎釜鍦板潃鏈夐偖緙?鍦板潃1,鍜屽湴鍧2緇勬垚.
鍏朵腑甯愬崟鍦板潃榪樻湁鏀朵歡浜?receiver).

    姝ゅ,榪樿鍑嗗涓涓厤緗枃浠?鏂囦歡鍚峜ustomer.xsdconfig),榪欎釜鏂囦歡鐨?br /> 浣滅敤鎴戝悗闈細璁?瀹冪殑鍐呭濡備笅:

<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">

  <xb:namespace>
    <xb:package>sample.xmlbean</xb:package>
  </xb:namespace>

</xb:config>


鍥涖乆MLBean浣跨敤姝ラ

    鍜屽叾浠栭潰鍚慗ava鐜鐨勫璞?鍏崇郴鏁版嵁搴撴槧灝勫伐鍏風殑浣跨敤姝ラ涓鏍?
鍦ㄦ寮忎嬌鐢╔MLBean鍓?鎴戜滑瑕佷綔涓や釜鍑嗗.

    1. 鐢熸垚XML Schema鏂囦歡

       浠涔堟槸XML Schema鏂囦歡? 姝e父鎯呭喌涓?姣忎釜XML鏂囦歡閮芥湁涓涓猄chema鏂囦歡,
       XML Schema鏂囦歡鏄竴涓猉ML鐨勭害鏉熸枃浠?瀹冨畾涔変簡XML鏂囦歡鐨勭粨鏋勫拰鍏冪礌.
       浠ュ強瀵瑰厓绱犲拰緇撴瀯鐨勭害鏉? 閫氫織鍦拌,濡傛灉璇碭ML鏂囦歡鏄暟鎹簱閲岀殑璁板綍,
       閭d箞Schema灝辨槸琛ㄧ粨鏋勫畾涔?

       涓轟粈涔堥渶瑕佽繖涓枃浠? XMLBean闇瑕侀氳繃榪欎釜鏂囦歡鐭ラ亾涓涓猉ML鏂囦歡鐨?br />        緇撴瀯浠ュ強綰︽潫,姣斿鏁版嵁綾誨瀷絳? 鍒╃敤榪欎釜Schema鏂囦歡,XMLBean灝嗕細浜х敓
       涓緋誨垪鐩稿叧鐨凧ava Classes鏉ュ疄鐜板XML鐨勬搷浣? 鑰屼綔涓哄紑鍙戜漢鍛?鍒欐槸
       鍒╃敤XMLBean浜х敓鐨凧ava Classes鏉ュ畬鎴愬XML鐨勬搷浣滆屼笉闇瑕丼AX鎴朌OM.

       鎬庢牱浜х敓榪欎釜Schema鏂囦歡鍛? 濡傛灉瀵逛簬鐔熸?zhèn)塜ML鐨勫紑鍙戜漢鍛?鍙互鑷繁鏉?br />        鍐欒繖涓猄chema鏂囦歡,瀵逛簬涓嶇啛鎮(zhèn)塜ML鐨勫紑鍙戜漢鍛?鍙互閫氳繃涓浜涘伐鍏鋒潵瀹屾垚.
       姣旇緝鏈夊悕鐨勫XMLSPY鍜孲tylus Studio閮藉彲浠ラ氳繃XML鏂囦歡鏉ョ敓鎴怱chema
       鏂囦歡. 鍔犲叆鎴戜滑宸茬粡鐢熸垚榪欎釜Schema鏂囦歡(customer.xsd):
      

       <?xml version="1.0" encoding="UTF-8"?>
       <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                  elementFormDefault="qualified">
         <xs:element name="Customers">
           <xs:complexType>
             <xs:sequence>
               <xs:element maxOccurs="unbounded" name="customer"
                           type="customerType"/>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       <xs:complexType name="customerType">
             <xs:sequence>
               <xs:element name="id" type="xs:int"/>
               <xs:element name="gender" type="xs:string"/>
               <xs:element name="firstname" type="xs:string"/>
               <xs:element name="lastname" type="xs:string"/>
               <xs:element name="phoneNumber" type="xs:string"/>
               <xs:element name="address" type="addressType"/>
             </xs:sequence>
       </xs:complexType>
         <xs:complexType name="addressType">
             <xs:sequence>
               <xs:element name="primaryAddress" type="primaryAddressType"/>
               <xs:element name="billingAddress" type="billingAddressType"/>
             </xs:sequence>
         </xs:complexType>

         <xs:complexType name="primaryAddressType">
             <xs:sequence>
               <xs:element name="postalCode" type="xs:string"/>
               <xs:element name="addressLine1" type="xs:string"/>
               <xs:element name="addressLine2" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
         <xs:complexType name="billingAddressType">
             <xs:sequence>
                   <xs:element name="receiver" type="xs:string"/>
               <xs:element name="postalCode" type="xs:string"/>
               <xs:element name="addressLine1" type="xs:string"/>
               <xs:element name="addressLine2" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
       </xs:schema>
      


    2. 鍒╃敤scomp鏉ョ敓鎴怞ava Classes

       scomp鏄疿MLBean鎻愪緵鐨勪竴涓紪璇戝伐鍏?瀹冨湪bin鐨勭洰褰曚笅. 閫氳繃榪欎釜宸ュ叿,
       鎴戜滑鍙互灝嗕互涓婄殑Schema鏂囦歡鐢熸垚Java Classes.
       scomp鐨勮娉曞涓?-

      

       scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*
      


       涓昏鍙傛暟璇存槑:
       -src [dir]                  -- 鐢熸垚鐨凧ava Classes瀛樻斁鐩綍
     -srconly                  -- 涓嶇紪璇慗ava Classes,涓嶄駭鐢烰ar鏂囦歡
     -out [jarFileName]  -- 鐢熸垚鐨凧ar鏂囦歡,緙虹渷鏄痻mltypes.jar
       -compiler                 -- Java緙栬瘧鍣ㄧ殑璺緞,鍗矹avac鐨勪綅緗?br />        schemaFile.xsd    -- XML Schema鏂囦歡浣嶇疆
       config.xsdconfig   -- xsdconfig鏂囦歡鐨勪綅緗? 榪欎釜鏂囦歡涓昏鐢ㄦ潵鍒跺畾鐢熸垚鐨凧ava Class
                              鐨勪竴浜涙枃浠跺悕瑙勫垯鍜孭ackage鐨勫悕縐?鍦ㄦ湰鏂?package鏄痵ample.xmlbean

       鍦ㄦ湰鏂?鎴戞槸榪欐牱榪愯鐨?
      

       scomp -src build\src  -out build\customerXmlBean.jar schema\customer.xsd
             -compiler C:\jdk142_04\bin\javac customer.xsdconfig
      


       榪欎釜鍛戒護琛岀殑鎰忔濇槸鍛婅瘔scomp鐢熸垚customerXmlBean.jar,鏀懼湪build鐩綍涓?鍚屾椂
       鐢熸垚婧愪唬鐮佹斁鍦╞uild\src涓? Schema鏂囦歡鏄痗ustomer.xsd,xsdconfig鏂囦歡鏄痗ustomer.xsdconfig.

       鍏跺疄, 鐢熸垚鐨凧ava婧愪唬鐮佹病鏈夊澶т綔鐢?鎴戜滑瑕佺殑鏄痡ar鏂囦歡.鎴戜滑鍏堢湅涓涓媌uild\src\sample\xmlbean涓嬬敓鎴愮殑Classes.
      

          CustomersDocument.java    -- 鏁翠釜XML鏂囨。鐨凧ava Class鏄犲皠
       CustomerType.java              -- 鑺傜偣sustomer鐨勬槧灝?br />        AddressType.java                 -- 鑺傜偣address鐨勬槧灝?br />        BillingAddressType.java        -- 鑺傜偣billingAddress鐨勬槧灝?br />        PrimaryAddressType.java      -- 鑺傜偣primaryAddress鐨勬槧灝?br />     


       濂戒簡,鍒版鎴戜滑鎵鏈夌殑鍑嗗宸ヤ綔宸茬粡瀹屾垚浜? 涓嬮潰灝卞紑濮嬭繘鍏ラ噸鐐癸細鍒╃敤鍒氭墠鐢熸垚鐨刯ar鏂囦歡璇誨啓XML.

浜斻佸埄鐢╔MLBean璇籜ML鏂囦歡

    鏂板緩涓涓狫ava Project,灝哫MLBean2.0.0\lib\涓嬬殑Jar鏂囦歡鍜屽垰鎵嶆垜浠敓鎴愮殑customerXmlBean.jar鍔犲叆
    鍒癙roject鐨凜lassPath.

    鏂板緩涓涓狫ava Class: CustomerXMLBean.  婧愮爜濡備笅:
    

    package com.sample.reader;

    import java.io.File;
    
    import sample.xmlbean.*;
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.xmlbeans.XmlOptions;
    public class CustomerXMLBean {
    private String filename = null;
    
    public CustomerXMLBean(String filename) {
            super();
            this.filename = filename;
    }

    public void customerReader() {
            try {
              File xmlFile = new File(filename);
              CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
              CustomerType[] customers = doc.getCustomers().getCustomerArray();
          
              for (int i = 0; i < customers.length; i++) {
                CustomerType customer = customers[i];
                println("Customer#" + i);
                println("Customer ID:" + customer.getId());
                println("First name:" + customer.getFirstname());
                println("Last name:" + customer.getLastname());
                println("Gender:" + customer.getGender());
                println("PhoneNumber:" + customer.getPhoneNumber());
                // Primary address
                PrimaryAddressType primaryAddress = customer.getAddress().getPrimaryAddress();
                println("PrimaryAddress:");
                println("PostalCode:" + primaryAddress.getPostalCode());
                println("AddressLine1:" + primaryAddress.getAddressLine1());
                println("AddressLine2:" + primaryAddress.getAddressLine2());
                // Billing address
                BillingAddressType billingAddress = customer.getAddress().getBillingAddress();
                println("BillingAddress:");
                println("Receiver:" + billingAddress.getReceiver());
                println("PostalCode:" + billingAddress.getPostalCode());
                println("AddressLine1:" + billingAddress.getAddressLine1());
                println("AddressLine2:" + billingAddress.getAddressLine2());
            
              }
            } catch (Exception ex) {
                    ex.printStackTrace();
            }
    }
    private void println(String str) {
          System.out.println(str);
    }
   public static void main(String[] args) {
      String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml";
                  
     CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                   customerXMLBean.customerReader();
    }

    }
    


    榪愯瀹?鍙傜湅杈撳嚭緇撴灉:
    

       Customer#0
       Customer ID:1
       First name:Jessica
       Last name:Lim
       Gender:female
       PhoneNumber:1234567
       PrimaryAddress:
       PostalCode:350106
       AddressLine1:#25-1
       AddressLine2:SHINSAYAMA 2-CHOME
       BillingAddress:
       Receiver:Ms Danielle
       PostalCode:350107
       AddressLine1:#167
       AddressLine2:NORTH TOWER HARBOUR CITY

       Customer#1
       Customer ID:2
       First name:David
       Last name:Bill
       Gender:male
       PhoneNumber:808182
       PrimaryAddress:
       PostalCode:319087
       AddressLine1:1033 WS St.
       AddressLine2:Tima Road
       BillingAddress:
       Receiver:Mr William
       PostalCode:672993
       AddressLine1:1033 WS St.
       AddressLine2:Tima Road
    

    鎬庝箞鏍?鏄笉鏄緢杞繪澗? XMLBean鐨勫▉鍔?

鍏佸埄鐢╔MLBean鍐橷ML鏂囦歡

    鍒╃敤XMLBean鍒涘緩涓涓猉ML鏂囨。涔熸槸涓浠惰交鑰屾槗涓劇殑浜?鎴戜滑鍐嶅鍔犱竴涓狹ethod,
    璇風湅涓涓嬬殑Java Class:
    

    public void createCustomer() {
    try {
        // Create Document
        CustomersDocument doc = CustomersDocument.Factory.newInstance();
        // Add new customer
        CustomerType customer = doc.addNewCustomers().addNewCustomer();
        // set customer info
        customer.setId(3);
        customer.setFirstname("Jessica");
        customer.setLastname("Lim");
        customer.setGender("female");
        customer.setPhoneNumber("1234567");
        // Add new address
        AddressType address = customer.addNewAddress();
        // Add new PrimaryAddress
        PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();
        primaryAddress.setPostalCode("350106");
        primaryAddress.setAddressLine1("#25-1");
        primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME");

        // Add new BillingAddress
        BillingAddressType billingAddress = address.addNewBillingAddress();
        billingAddress.setReceiver("Ms Danielle");
        billingAddress.setPostalCode("350107");
        billingAddress.setAddressLine1("#167");
        billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");

        File xmlFile = new File(filename);
        doc.save(xmlFile);
        } catch (Exception ex) {
                ex.printStackTrace();
        }

  }
    

    淇敼main method.
    

    public static void main(String[] args) {
    String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
        CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
        customerXMLBean.createCustomer();
    }
    

    榪愯,鎵撳紑customers_new.xml:
    

    <?xml version="1.0" encoding="UTF-8"?>
    <Customers>
    <customer>
            <id>3</id>
            <gender>female</gender>
            <firstname>Jessica</firstname>
            <lastname>Lim</lastname>
            <phoneNumber>1234567</phoneNumber>
            <address>
                    <primaryAddress>
                         <postalCode>350106</postalCode>
                         <addressLine1>#25-1</addressLine1>
                                       <addressLine2>SHINSAYAMA 2-CHOME</addressLine2>
                    </primaryAddress>
                    <billingAddress>
                        <receiver>Ms Danielle</receiver>
                        <postalCode>350107</postalCode>
                       <addressLine1>#167</addressLine1>
                       <addressLine2>NORTH TOWER HARBOUR CITY</addressLine2>
                    </billingAddress>
                    </address>
            </customer>
    </Customers>
    



涓冦佸埄鐢╔MLBean淇敼XML鏂囦歡

    鎴戜滑鍐嶅鍔犱竴涓狹ethod:
    

      public void updateCustomer(int id,String lastname) {
         try {
        File xmlFile = new File(filename);
        CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
        CustomerType[] customers = doc.getCustomers().getCustomerArray();
      
        for (int i = 0; i < customers.length; i++) {
           CustomerType customer = customers[i];
          if(customer.getId()==id){
                customer.setLastname(lastname);
                break;
            }
        }
        doc.save(xmlFile);
         } catch (Exception ex) {
          ex.printStackTrace();
         }
           }
    

    main method:
    

    public static void main(String[] args) {
     String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
                    
    CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                    
    customerXMLBean.updateCustomer(3,"last");
    }
    

    榪愯涔嬪悗,鎴戜滑灝嗕細鐪嬪埌瀹㈡埛緙栧彿涓?鐨勫鎴風殑lastname宸茬粡鏀逛負last.

鍏佸埄鐢╔MLBean鍒犻櫎涓涓猚ustomer

    鍐嶅鍔犱竴涓狹ethod:
    

    public void deleteCustomer(int id) {
     try {
      File xmlFile = new File(filename);
     CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
    CustomerType[] customers = doc.getCustomers().getCustomerArray();

   for (int i = 0; i < customers.length; i++) {
        CustomerType customer = customers[i];
        if(customer.getId()==id){
                        customer.setNil() ;
                        break;
               }
   }
   doc.save(xmlFile);
   } catch (Exception ex) {
        ex.printStackTrace();
        }
   }


         main method:
    

    public static void main(String[] args) {
    String filename = "F://JavaTest//Eclipse//XMLBean//xml//customers_new.xml";
                    
    CustomerXMLBean customerXMLBean = new CustomerXMLBean(filename);
                    
    customerXMLBean.deleteCustomer(3);
    }

        
榪愯,鎴戜滑灝嗕細鐪嬪埌瀹㈡埛緙栧彿涓?鐨勫鎴風殑璧勬枡宸茬粡琚垹闄?

涔?jié)銆佹煡璇ML

    闄や簡鏈枃鍦ㄤ互涓婅榪扮殑,鍒╃敤XMLBean鑳借交杞繪澗鏉懼畬鎴怷ML鐨勮鍐欐搷浣滃,緇撳悎XPath鍜孹Query,
   XMLBean榪樿兘瀹屾垚璞QL鏌ヨ鏁版嵁搴撲竴鏍鋒柟渚垮湴鏌ヨXML鏁版嵁. 鍏充簬XML鏌ヨ浠ュ強濡備綍鍒涘緩XML鏁版嵁搴? 鎴戝皢鍦ㄥ彟涓綃囨枃绔犻噷璁ㄨ.



鍗併佺粨鏉熻
    XMLBean鑳藉府鍔╂垜浠交鏄撹鍐橷ML,榪欏皢鏈夊姪浜庢垜浠檷浣嶺ML鐨勫涔犲拰浣跨敤,鏈変簡榪欎釜鍩虹,
    寮鍙戜漢鍛樺皢涓哄涔犳洿澶氬湴XML鐩稿叧鎶鏈拰Web Services,JMS絳夊叾浠朖2EE鎶鏈墦涓嬭壇濂藉湴鍩虹.


鍏充簬浣滆咃細
鍙舵灚錛氱儹鐖盝ava鍜孫racle. 鍦ㄨ蔣浠跺紑鍙戞湁榪?0騫? 鐩墠鍦ㄥ浗澶栦竴瀹剁編鍥藉ぇ鍏徃鎷呬換SA, 璐熻矗鎶鏈爺絀躲備綔鑰匓log錛?a target="_new">http://blog.matrix.org.cn/page/鍙舵灚


lk 2007-11-22 11:08 鍙戣〃璇勮
]]>
java sax 瑙f瀽 xmlhttp://m.tkk7.com/lcs/archive/2007/11/22/162304.htmllklkThu, 22 Nov 2007 02:44:00 GMThttp://m.tkk7.com/lcs/archive/2007/11/22/162304.htmlhttp://m.tkk7.com/lcs/comments/162304.htmlhttp://m.tkk7.com/lcs/archive/2007/11/22/162304.html#Feedback0http://m.tkk7.com/lcs/comments/commentRss/162304.htmlhttp://m.tkk7.com/lcs/services/trackbacks/162304.html
浠g爜錛?br />
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.Locator;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
import java.io.IOException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;


class TestSAX extends DefaultHandler{
    
    
private StringBuffer buf;
    
private String str;
    
public TestSAX(){
        
super(); 
    }

    
//    public void setDocumentLocator(Locator locator){}
    
    
public void startDocument() throws SAXException{
        buf
=new StringBuffer();
        System.out.println(
"*******寮濮嬭В鏋愭枃妗?******");
    }

    
    
public void endDocument() throws SAXException{        
        System.out.println(
"*******鏂囨。瑙f瀽緇撴潫*******");
    }

    
    
public void startPrefixMapping( String prefix, String uri ){
        System.out.println(
" 鍓嶇紑鏄犲皠: " + prefix +" 寮濮?"+ " 瀹冪殑URI鏄?" + uri);
    }

    
    
public void endPrefixMapping( String prefix ){
        System.out.println(
" 鍓嶇紑鏄犲皠: "+prefix+" 緇撴潫!");
    }

    
//    public void processingInstruction( String target, String instruction )throws SAXException{}
    
//    public void ignorableWhitespace( char[] chars, int start, int length ) throws SAXException {}
    
//    public void skippedEntity( String name ) throws SAXException {}
    
    
public void startElement(String namespaceURI,String localName,String qName,Attributes atts){
        System.out.println(
"*******寮濮嬭В鏋愬厓绱?******");    
        System.out.println(
"鍏冪礌鍚?/span>"+qName);        
        
for(int i=0;i<atts.getLength();i++){
            System.out.println(
"鍏冪礌鍚?/span>"+atts.getLocalName(i)+"灞炴у?/span>"+atts.getValue(i));
        }

    }

    
    
public void endElement(String namespaceURI,String localName,String fullName )throws SAXException{
//        buf.trimToSize();
        str = buf.toString(); 
        System.out.println(
"buf = "+buf+" || length = "+buf.length());
        System.out.println(
"str = "+str.trim()+" || length = "+str.trim().length());
        buf.delete(
0,buf.length());
        System.out.println(
"******"+namespaceURI+"鍏冪礌瑙f瀽緇撴潫"+localName+"********"+fullName);
    }

    
    
public void characters( char[] chars, int start, int length )throws SAXException{
        
//灝嗗厓绱犲唴瀹圭瘡鍔犲埌StringBuffer涓?nbsp;
        buf.append(chars,start,length);
    }

    
    
public static void main(String args[]){
        
try{
            SAXParserFactory sf 
= SAXParserFactory.newInstance();
            SAXParser sp 
= sf.newSAXParser();
            TestSAX testsax
=new TestSAX();
            sp.parse(
new InputSource("test1.xml"),testsax);
        }
catch(IOException e){
            e.printStackTrace(); 
        }
catch(SAXException e){
            e.printStackTrace(); 
        }
catch(Exception e){
            e.printStackTrace(); 
        }

    }

}

xml鏂囦歡錛屾垜璇葷殑鏃跺欐湁閿欒錛岀敤浜嗚嚜宸辯殑錛屽笇鏈涘叾浠栦漢姣旀垜騫歌繍錛?br /> 浠g爜錛?br />
<?xml version="1.0" encoding="GB2312"?>
<row>
<person>
<name>鐜嬪皬鏄?/span></name>
<college>淇℃伅瀛﹂櫌</college> 
<telephone>6258113</telephone>
<notes>鐢?1955騫寸敓,鍗氬+錛?5騫磋皟鍏ユ搗鍗楀ぇ瀛?/span></notes>
</person>
</row>


lk 2007-11-22 10:44 鍙戣〃璇勮
]]>
java 璇粁ml鏂囦歡渚嬪瓙http://m.tkk7.com/lcs/archive/2007/11/21/162088.htmllklkWed, 21 Nov 2007 06:47:00 GMThttp://m.tkk7.com/lcs/archive/2007/11/21/162088.htmlhttp://m.tkk7.com/lcs/comments/162088.htmlhttp://m.tkk7.com/lcs/archive/2007/11/21/162088.html#Feedback0http://m.tkk7.com/lcs/comments/commentRss/162088.htmlhttp://m.tkk7.com/lcs/services/trackbacks/162088.html
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<books>
    
<book email="zhoujunhui">
        
<name>rjzjh</name>
        
<price>jjjjjj</price>
    
</book>
</books>

浠g爜錛?br />
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
//涓嬮潰涓昏鏄痮rg.xml.sax鍖呯殑綾?/span>
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomParse {

    
public DomParse(){
        
//錛?錛夊緱鍒癉OM瑙f瀽鍣ㄧ殑宸ュ巶瀹炰緥
        DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
        
//寰楀埌javax.xml.parsers.DocumentBuilderFactory;綾葷殑瀹炰緥灝辨槸鎴戜滑瑕佺殑瑙f瀽鍣ㄥ伐鍘?/span>
        try {
            
//錛?錛変粠DOM宸ュ巶鑾峰緱DOM瑙f瀽鍣?/span>
            DocumentBuilder dombuilder=domfac.newDocumentBuilder();
            
//閫氳繃javax.xml.parsers.DocumentBuilderFactory瀹炰緥鐨勯潤鎬佹柟娉昻ewDocumentBuilder()寰楀埌DOM瑙f瀽鍣?br />             //錛?錛夋妸瑕佽В鏋愮殑XML鏂囨。杞寲涓鴻緭鍏ユ祦錛屼互渚緿OM瑙f瀽鍣ㄨВ鏋愬畠
            InputStream is=new FileInputStream("test1.xml");            
            
//錛?錛夎В鏋怷ML鏂囨。鐨勮緭鍏ユ祦錛屽緱鍒頒竴涓狣ocument
            Document doc=dombuilder.parse(is);
            
//鐢盭ML鏂囨。鐨勮緭鍏ユ祦寰楀埌涓涓猳rg.w3c.dom.Document瀵硅薄錛屼互鍚庣殑澶勭悊閮芥槸瀵笵ocument瀵硅薄榪涜鐨?br />             //錛?錛夊緱鍒癤ML鏂囨。鐨勬牴鑺傜偣
            Element root=doc.getDocumentElement();
            
//鍦―OM涓彧鏈夋牴鑺傜偣鏄竴涓猳rg.w3c.dom.Element瀵硅薄銆?br />             //錛?錛夊緱鍒拌妭鐐圭殑瀛愯妭鐐?/span>
            NodeList books=root.getChildNodes();
            
            
if(books!=null){
                
for(int i=0;i<books.getLength();i++){
                    Node book
=books.item(i);
                    
if(book.getNodeType()==Node.ELEMENT_NODE){
                        
//錛?錛夊彇寰楄妭鐐圭殑灞炴у?/span>
                        String email=book.getAttributes().getNamedItem("email").getNodeValue();
                        System.out.println(email);
                        
//娉ㄦ剰錛岃妭鐐圭殑灞炴т篃鏄畠鐨勫瓙鑺傜偣銆傚畠鐨勮妭鐐圭被鍨嬩篃鏄疦ode.ELEMENT_NODE
                        
//錛?錛夎疆寰瓙鑺傜偣
                        for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()){
                            
if(node.getNodeType()==Node.ELEMENT_NODE){
                                
if(node.getNodeName().equals("name")){
                                    String name
=node.getNodeValue();
                                    String name1
=node.getFirstChild().getNodeValue();
                                    System.out.println(name);
                                    System.out.println(name1);
                                }

                                
if(node.getNodeName().equals("price")){
                                    String price
=node.getFirstChild().getNodeValue();
                                    System.out.println(price);
                                }

                            }

                        }

                    }

                }
//錛?錛夎繖鏄敤涓涓猳rg.w3c.dom.NodeList鎺ュ彛鏉ュ瓨鏀懼畠鎵鏈夊瓙鑺傜偣鐨勶紝榪樻湁涓縐嶈疆寰瓙鑺傜偣鐨勬柟娉曪紝鍚庨潰鏈変粙緇?/span>
            }

        }
 catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
 catch (FileNotFoundException e) {
            e.printStackTrace();
        }
 catch (SAXException e) {
            e.printStackTrace();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

    }


    
public static void main(String[] args) {
        
new DomParse();
    }

}


榪欐浠g爜鐨勬墦鍗拌緭鍑轟負錛?/p>

銆銆null

銆銆alterrjzjh

銆銆jjjjjj

銆銆浠庝笂闈㈠彲浠ョ湅鍑?/p>

銆銆String name=node.getNodeValue();

銆銆鏄竴涓┖鍊箋傝?/p>

銆銆String name1=node.getFirstChild().getNodeValue();

銆銆鎵嶆槸鐪熸鐨勫鹼紝榪欐槸鍥犱負DOM鎶?lt;name>rjzjh</name>涔熷綋浣滄槸涓ゅ眰緇撴瀯鐨勮妭鐐癸紝鍏剁埗鑺傜偣



lk 2007-11-21 14:47 鍙戣〃璇勮
]]>
Java涓洓縐峏ML瑙f瀽鎶鏈?/title><link>http://m.tkk7.com/lcs/archive/2007/11/21/162077.html</link><dc:creator>lk</dc:creator><author>lk</author><pubDate>Wed, 21 Nov 2007 06:04:00 GMT</pubDate><guid>http://m.tkk7.com/lcs/archive/2007/11/21/162077.html</guid><wfw:comment>http://m.tkk7.com/lcs/comments/162077.html</wfw:comment><comments>http://m.tkk7.com/lcs/archive/2007/11/21/162077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/lcs/comments/commentRss/162077.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/lcs/services/trackbacks/162077.html</trackback:ping><description><![CDATA[鍦ㄥ鉤鏃跺伐浣滀腑錛岄毦鍏嶄細閬囧埌鎶?XML 浣滀負鏁版嵁瀛樺偍鏍煎紡銆傞潰瀵圭洰鍓嶇綾葷箒澶氱殑瑙e喅鏂規(guī)錛屽摢涓渶閫傚悎鎴戜滑鍛紵鍦ㄨ繖綃囨枃绔犱腑錛屾垜瀵硅繖鍥涚涓繪祦鏂規(guī)鍋氫竴涓笉瀹屽叏璇勬祴錛屼粎浠呴拡瀵歸亶鍘?XML 榪欏潡鏉ユ祴璇曪紝鍥犱負閬嶅巻 XML 鏄伐浣滀腑浣跨敤鏈澶氱殑錛堣嚦灝戞垜璁や負錛夈?<br /> <br /> 銆銆棰?澶?<br /> <br /> 銆銆<strong>嫻嬭瘯鐜錛?<br /> </strong><br /> 銆銆AMD 姣掗緳1.4G OC 1.5G銆?56M DDR333銆乄indows2000 Server SP4銆丼un JDK 1.4.1+Eclipse 2.1+Resin 2.1.8錛屽湪 Debug 妯″紡涓嬫祴璇曘?<br /> <br /> 銆銆XML 鏂囦歡鏍煎紡濡備笅錛?<br /> <br /> 銆銆錛?xml version="1.0" encoding="GB2312"?錛?<br /> 銆銆錛淩ESULT錛?<br /> 銆銆錛淰ALUE錛?<br /> 銆銆錛淣O錛濧1234錛?NO錛?<br /> 銆銆錛淎DDR錛炲洓宸濈渷XX鍘縓X闀嘪X璺疿孌礨X鍙鳳紲/ADDR錛?<br /> 銆銆錛?VALUE錛?<br /> 銆銆錛淰ALUE錛?<br /> 銆銆錛淣O錛濨1234錛?NO錛?<br /> 銆銆錛淎DDR錛炲洓宸濈渷XX甯俋X涔X鏉慩X緇勶紲/ADDR錛?<br /> 銆銆錛?VALUE錛?<br /> 銆銆錛?RESULT錛?<br /> <br /> 銆銆<strong>嫻嬭瘯鏂規(guī)硶錛?<br /> </strong><br /> 銆銆閲囩敤 JSP 绔皟鐢˙ean錛堣嚦浜庝負浠涔堥噰鐢↗SP鏉ヨ皟鐢紝璇峰弬鑰冿細http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx錛夛紝璁╂瘡涓縐嶆柟妗堝垎鍒В鏋?0K銆?00K銆?000K銆?0000K鐨?XML 鏂囦歡錛岃綆楀叾娑堣楁椂闂達紙鍗曚綅:姣錛夈?<br /> <br /> 銆銆JSP 鏂囦歡錛?<br /> <br /> 銆銆錛?@ page contentType="text/html; charset=gb2312" %錛?<br /> 銆銆錛?@ page import="com.test.*"%錛?<br /> <br /> 銆銆錛渉tml錛?<br /> 銆銆錛渂ody錛?<br /> 銆銆錛? <br /> 銆銆String args[]={""}; <br /> 銆銆MyXMLReader.main(args); <br /> 銆銆%錛?<br /> 銆銆錛?body錛?<br /> 銆銆錛?html錛?<br /> <br /> <strong>銆銆嫻?璇?/strong> <br /> <br /> 銆銆棣栧厛鍑哄満鐨勬槸 DOM錛圝AXP Crimson 瑙f瀽鍣級 <br /> <br /> 銆銆DOM 鏄敤涓庡鉤鍙板拰璇█鏃犲叧鐨勬柟寮忚〃紺?XML 鏂囨。鐨勫畼鏂?W3C 鏍囧噯銆侱OM 鏄互灞傛緇撴瀯緇勭粐鐨勮妭鐐規(guī)垨淇℃伅鐗囨柇鐨勯泦鍚堛傝繖涓眰嬈$粨鏋勫厑璁稿紑鍙戜漢鍛樺湪鏍戜腑瀵繪壘鐗瑰畾淇℃伅銆傚垎鏋愯緇撴瀯閫氬父闇瑕佸姞杞芥暣涓枃妗e拰鏋勯犲眰嬈$粨鏋勶紝鐒跺悗鎵嶈兘鍋氫換浣曞伐浣溿傜敱浜庡畠鏄熀浜庝俊鎭眰嬈$殑錛屽洜鑰?DOM 琚涓烘槸鍩轟簬鏍戞垨鍩轟簬瀵硅薄鐨勩侱OM 浠ュ強騫夸箟鐨勫熀浜庢爲鐨勫鐞嗗叿鏈夊嚑涓紭鐐廣傞鍏堬紝鐢變簬鏍戝湪鍐呭瓨涓槸鎸佷箙鐨勶紝鍥犳鍙互淇敼瀹冧互渚垮簲鐢ㄧ▼搴忚兘瀵規(guī)暟鎹拰緇撴瀯浣滃嚭鏇存敼銆傚畠榪樺彲浠ュ湪浠諱綍鏃跺欏湪鏍戜腑涓婁笅瀵艱埅錛岃屼笉鏄儚 SAX 閭f牱鏄竴嬈℃х殑澶勭悊銆侱OM 浣跨敤璧鋒潵涔熻綆鍗曞緱澶氥?<br /> <br /> 銆銆鍙︿竴鏂歸潰錛屽浜庣壒鍒ぇ鐨勬枃妗o紝瑙f瀽鍜屽姞杞芥暣涓枃妗e彲鑳藉緢鎱笖寰堣楄祫婧愶紝鍥犳浣跨敤鍏朵粬鎵嬫鏉ュ鐞嗚繖鏍風殑鏁版嵁浼氭洿濂姐傝繖浜涘熀浜庝簨浠剁殑妯″瀷錛屾瘮濡?SAX銆?<br /> <br /> 銆銆Bean鏂囦歡錛?<br /> <br /> 銆銆package com.test; <br /> <br /> 銆銆import java.io.*; <br /> 銆銆import java.util.*; <br /> 銆銆import org.w3c.dom.*; <br /> 銆銆import javax.xml.parsers.*; <br /> <br /> 銆銆public class MyXMLReader{ <br /> <br /> 銆銆public static void main(String arge[]){ <br /> 銆銆long lasting =System.currentTimeMillis(); <br /> 銆銆try{ <br /> 銆銆銆File f=new File("data_10k.xml"); <br /> 銆銆銆DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); <br /> 銆銆銆DocumentBuilder builder=factory.newDocumentBuilder(); <br /> 銆銆銆Document doc = builder.parse(f); <br /> 銆銆銆NodeList nl = doc.getElementsByTagName("VALUE"); <br /> 銆銆銆for (int i=0;i錛渘l.getLength();i++){ <br /> 銆銆銆銆System.out.print("杞︾墝鍙風爜:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); <br /> 銆銆銆銆System.out.println(" 杞︿富鍦板潃:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); <br /> 銆銆} <br /> 銆銆}catch(Exception e){ <br /> 銆銆銆e.printStackTrace(); <br /> 銆銆} <br /> 銆銆System.out.println("榪愯鏃墮棿錛?+(System.currentTimeMillis() - lasting)+" 姣"); <br /> 銆銆} <br /> 銆銆} <br /> <br /> <br /> 銆銆10k娑堣楁椂闂達細265 203 219 172 <br /> 銆銆100k娑堣楁椂闂達細9172 9016 8891 9000 <br /> 銆銆1000k娑堣楁椂闂達細691719 675407 708375 739656 <br /> 銆銆10000k娑堣楁椂闂達細OutOfMemoryError <br /> <br /> 銆銆鎺ョ潃鏄?SAX <br /> <br /> 銆銆榪欑澶勭悊鐨勪紭鐐歸潪甯哥被浼間簬嫻佸獟浣撶殑浼樼偣銆傚垎鏋愯兘澶熺珛鍗沖紑濮嬶紝鑰屼笉鏄瓑寰呮墍鏈夌殑鏁版嵁琚鐞嗐傝屼笖錛岀敱浜庡簲鐢ㄧ▼搴忓彧鏄湪璇誨彇鏁版嵁鏃舵鏌ユ暟鎹紝鍥犳涓嶉渶瑕佸皢鏁版嵁瀛樺偍鍦ㄥ唴瀛樹腑銆傝繖瀵逛簬澶у瀷鏂囨。鏉ヨ鏄釜宸ㄥぇ鐨勪紭鐐廣備簨瀹炰笂錛屽簲鐢ㄧ▼搴忕敋鑷充笉蹇呰В鏋愭暣涓枃妗o紱瀹冨彲浠ュ湪鏌愪釜鏉′歡寰楀埌婊¤凍鏃跺仠姝㈣В鏋愩備竴鑸潵璇達紝SAX 榪樻瘮瀹冪殑鏇夸唬鑰?DOM 蹇澶氥? <p>銆銆 閫夋嫨 DOM 榪樻槸閫夋嫨 SAX 錛?<br /> <br /> 銆銆瀵逛簬闇瑕佽嚜宸辯紪鍐欎唬鐮佹潵澶勭悊 XML 鏂囨。鐨勫紑鍙戜漢鍛樻潵璇達紝閫夋嫨 DOM 榪樻槸 SAX 瑙f瀽妯″瀷鏄竴涓潪甯擱噸瑕佺殑璁捐鍐崇瓥銆?<br /> <br /> 銆銆DOM 閲囩敤寤虹珛鏍戝艦緇撴瀯鐨勬柟寮忚闂?XML 鏂囨。錛岃?SAX 閲囩敤鐨勪簨浠舵ā鍨嬨?<br /> <br /> 銆銆DOM 瑙f瀽鍣ㄦ妸 XML 鏂囨。杞寲涓轟竴涓寘鍚叾鍐呭鐨勬爲錛屽茍鍙互瀵規(guī)爲榪涜閬嶅巻銆傜敤 DOM 瑙f瀽妯″瀷鐨勪紭鐐規(guī)槸緙栫▼瀹規(guī)槗錛屽紑鍙戜漢鍛樺彧闇瑕佽皟鐢ㄥ緩鏍戠殑鎸囦護錛岀劧鍚庡埄鐢╪avigation APIs璁塊棶鎵闇鐨勬爲鑺傜偣鏉ュ畬鎴愪換鍔°傚彲浠ュ緢瀹規(guī)槗鐨勬坊鍔犲拰淇敼鏍戜腑鐨勫厓绱犮傜劧鑰岀敱浜庝嬌鐢?DOM 瑙f瀽鍣ㄧ殑鏃跺欓渶瑕佸鐞嗘暣涓?XML 鏂囨。錛屾墍浠ュ鎬ц兘鍜屽唴瀛樼殑瑕佹眰姣旇緝楂橈紝灝ゅ叾鏄亣鍒板緢澶х殑 XML 鏂囦歡鐨勬椂鍊欍傜敱浜庡畠鐨勯亶鍘嗚兘鍔涳紝DOM 瑙f瀽鍣ㄥ父鐢ㄤ簬 XML 鏂囨。闇瑕侀綣佺殑鏀瑰彉鐨勬湇鍔′腑銆?<br /> <br /> 銆銆SAX 瑙f瀽鍣ㄩ噰鐢ㄤ簡鍩轟簬浜嬩歡鐨勬ā鍨嬶紝瀹冨湪瑙f瀽 XML 鏂囨。鐨勬椂鍊欏彲浠ヨЕ鍙戜竴緋誨垪鐨勪簨浠訛紝褰撳彂鐜扮粰瀹氱殑tag鐨勬椂鍊欙紝瀹冨彲浠ユ縺媧諱竴涓洖璋冩柟娉曪紝鍛婅瘔璇ユ柟娉曞埗瀹氱殑鏍囩宸茬粡鎵懼埌銆係AX 瀵瑰唴瀛樼殑瑕佹眰閫氬父浼氭瘮杈冧綆錛屽洜涓哄畠璁╁紑鍙戜漢鍛樿嚜宸辨潵鍐沖畾鎵瑕佸鐞嗙殑tag銆傜壒鍒槸褰撳紑鍙戜漢鍛樺彧闇瑕佸鐞嗘枃妗d腑鎵鍖呭惈鐨勯儴鍒嗘暟鎹椂錛孲AX 榪欑鎵╁睍鑳藉姏寰楀埌浜嗘洿濂界殑浣撶幇銆備絾鐢?SAX 瑙f瀽鍣ㄧ殑鏃跺欑紪鐮佸伐浣滀細姣旇緝鍥伴毦錛岃屼笖寰堥毦鍚屾椂璁塊棶鍚屼竴涓枃妗d腑鐨勫澶勪笉鍚屾暟鎹?<br /> <br /> 銆銆Bean鏂囦歡錛?<br /> <br /> 銆銆package com.test; <br /> 銆銆import org.xml.sax.*; <br /> 銆銆import org.xml.sax.helpers.*; <br /> 銆銆import javax.xml.parsers.*; <br /> <br /> 銆銆public class MyXMLReader extends DefaultHandler { <br /> <br /> 銆銆java.util.Stack tags = new java.util.Stack(); <br /> <br /> 銆銆public MyXMLReader() { <br /> 銆銆super(); <br /> 銆銆} <br /> <br /> 銆銆public static void main(String args[]) { <br /> 銆銆long lasting = System.currentTimeMillis(); <br /> 銆銆try { <br /> 銆銆銆SAXParserFactory sf = SAXParserFactory.newInstance(); <br /> 銆銆銆SAXParser sp = sf.newSAXParser(); <br /> 銆銆銆MyXMLReader reader = new MyXMLReader(); <br /> 銆銆銆sp.parse(new InputSource("data_10k.xml"), reader); <br /> 銆銆} catch (Exception e) { <br /> 銆銆銆e.printStackTrace(); <br /> 銆銆} <br /> 銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + " 姣"); <br /> 銆銆} <br /> <br /> 銆銆public void characters(char ch[], int start, int length) throws SAXException { <br /> 銆銆String tag = (String) tags.peek(); <br /> 銆銆if (tag.equals("NO")) { <br /> 銆銆銆System.out.print("杞︾墝鍙風爜錛? + new String(ch, start, length)); <br /> 銆銆} <br /> 銆銆if (tag.equals("ADDR")) { <br /> 銆銆System.out.println(" 鍦板潃:" + new String(ch, start, length)); <br /> 銆銆} <br /> 銆銆} <br /> <br /> 銆銆public void startElement( <br /> 銆銆String uri, <br /> 銆銆String localName, <br /> 銆銆String qName, <br /> 銆銆Attributes attrs) { <br /> 銆銆tags.push(qName); <br /> 銆銆} <br /> 銆銆} <br /> <br /> 銆銆10k娑堣楁椂闂達細110 47 109 78 <br /> 銆銆100k娑堣楁椂闂達細344 406 375 422 <br /> 銆銆1000k娑堣楁椂闂達細3234 3281 3688 3312 <br /> 銆銆10000k娑堣楁椂闂達細32578 34313 31797 31890 30328 <br /> <br /> 銆銆鐒跺悗鏄?JDOM http://www.jdom.org/ <br /> <br /> 銆銆JDOM 鐨勭洰鐨勬槸鎴愪負 Java 鐗瑰畾鏂囨。妯″瀷錛屽畠綆鍖栦笌 XML 鐨勪氦浜掑茍涓旀瘮浣跨敤 DOM 瀹炵幇鏇村揩銆傜敱浜庢槸絎竴涓?Java 鐗瑰畾妯″瀷錛孞DOM 涓鐩村緱鍒板ぇ鍔涙帹騫垮拰淇冭繘銆傛鍦ㄨ冭檻閫氳繃“Java 瑙勮寖璇鋒眰 JSR-102”灝嗗畠鏈緇堢敤浣?#8220;Java 鏍囧噯鎵╁睍”銆備粠 2000 騫村垵灝卞凡緇忓紑濮嬩簡 JDOM 寮鍙戙?<br /> <br /> 銆銆JDOM 涓?DOM 涓昏鏈変袱鏂歸潰涓嶅悓銆傞鍏堬紝JDOM 浠呬嬌鐢ㄥ叿浣撶被鑰屼笉浣跨敤鎺ュ彛銆傝繖鍦ㄦ煇浜涙柟闈㈢畝鍖栦簡 API錛屼絾鏄篃闄愬埗浜嗙伒媧繪с傜浜岋紝API 澶ч噺浣跨敤浜?Collections 綾伙紝綆鍖栦簡閭d簺宸茬粡鐔熸?zhèn)墭q欎簺綾葷殑 Java 寮鍙戣呯殑浣跨敤銆?<br /> <br /> 銆銆JDOM 鏂囨。澹版槑鍏剁洰鐨勬槸“浣跨敤 20%錛堟垨鏇村皯錛夌殑綺懼姏瑙e喅 80%錛堟垨鏇村錛塉ava/XML 闂”錛堟牴鎹涔犳洸綰垮亣瀹氫負 20%錛夈侸DOM 瀵逛簬澶у鏁?Java/XML 搴旂敤紼嬪簭鏉ヨ褰撶劧鏄湁鐢ㄧ殑錛屽茍涓斿ぇ澶氭暟寮鍙戣呭彂鐜?API 姣?DOM 瀹規(guī)槗鐞嗚В寰楀銆侸DOM 榪樺寘鎷紼嬪簭琛屼負鐨勭浉褰撳箍娉涙鏌ヤ互闃叉鐢ㄦ埛鍋氫換浣曞湪 XML 涓棤鎰忎箟鐨勪簨銆傜劧鑰岋紝瀹冧粛闇瑕佹?zhèn)ㄥ厖鍒嗙悊瑙?XML 浠ヤ究鍋氫竴浜涜秴鍑哄熀鏈殑宸ヤ綔錛堟垨鑰呯敋鑷崇悊瑙f煇浜涙儏鍐典笅鐨勯敊璇級銆傝繖涔熻鏄瘮瀛︿範 DOM 鎴?JDOM 鎺ュ彛閮芥洿鏈夋剰涔夌殑宸ヤ綔銆?<br /> <br /> 銆銆JDOM 鑷韓涓嶅寘鍚В鏋愬櫒銆傚畠閫氬父浣跨敤 SAX2 瑙f瀽鍣ㄦ潵瑙f瀽鍜岄獙璇佽緭鍏?XML 鏂囨。錛堝敖綆″畠榪樺彲浠ュ皢浠ュ墠鏋勯犵殑 DOM 琛ㄧず浣滀負杈撳叆錛夈傚畠鍖呭惈涓浜涜漿鎹㈠櫒浠ュ皢 JDOM 琛ㄧず杈撳嚭鎴?SAX2 浜嬩歡嫻併丏OM 妯″瀷鎴?XML 鏂囨湰鏂囨。銆侸DOM 鏄湪 Apache 璁稿彲璇佸彉浣撲笅鍙戝竷鐨勫紑鏀炬簮鐮併?<br /> <br /> 銆銆Bean鏂囦歡錛?<br /> <br /> 銆銆package com.test; <br /> <br /> 銆銆import java.io.*; <br /> 銆銆import java.util.*; <br /> 銆銆import org.jdom.*; <br /> 銆銆import org.jdom.input.*; <br /> <br /> 銆銆public class MyXMLReader { <br /> <br /> 銆銆public static void main(String arge[]) { <br /> 銆銆long lasting = System.currentTimeMillis(); <br /> 銆銆try { <br /> 銆銆銆SAXBuilder builder = new SAXBuilder(); <br /> 銆銆銆Document doc = builder.build(new File("data_10k.xml")); <br /> 銆銆銆Element foo = doc.getRootElement(); <br /> 銆銆銆List allChildren = foo.getChildren(); <br /> 銆銆銆for(int i=0;i錛渁llChildren.size();i++) { <br /> 銆銆銆銆System.out.print("杞︾墝鍙風爜:" + ((Element)allChildren.get(i)).getChild("NO").getText()); <br /> 銆銆銆銆System.out.println(" 杞︿富鍦板潃:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); <br /> 銆銆銆} <br /> 銆銆} catch (Exception e) { <br /> 銆銆銆e.printStackTrace(); <br /> 銆銆} <br /> 銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + " 姣"); <br /> 銆銆} <br /> 銆銆} <br /> <br /> 銆銆10k娑堣楁椂闂達細125 62 187 94 <br /> 銆銆100k娑堣楁椂闂達細704 625 640 766 <br /> 銆銆1000k娑堣楁椂闂達細27984 30750 27859 30656 <br /> 銆銆10000k娑堣楁椂闂達細OutOfMemoryError <br /> <br /> 銆銆鏈鍚庢槸 DOM4J http://dom4j.sourceforge.net/ <br /> <br /> 銆銆铏界劧 DOM4J 浠h〃浜嗗畬鍏ㄧ嫭绔嬬殑寮鍙戠粨鏋滐紝浣嗘渶鍒濓紝瀹冩槸 JDOM 鐨勪竴縐嶆櫤鑳藉垎鏀傚畠鍚堝茍浜嗚澶氳秴鍑哄熀鏈?XML 鏂囨。琛ㄧず鐨勫姛鑳斤紝鍖呮嫭闆嗘垚鐨?XPath 鏀寔銆乆ML Schema 鏀寔浠ュ強鐢ㄤ簬澶ф枃妗f垨嫻佸寲鏂囨。鐨勫熀浜庝簨浠剁殑澶勭悊銆傚畠榪樻彁渚涗簡鏋勫緩鏂囨。琛ㄧず鐨勯夐」錛屽畠閫氳繃 DOM4J API 鍜屾爣鍑?DOM 鎺ュ彛鍏鋒湁騫惰璁塊棶鍔熻兘銆備粠 2000 涓嬪崐騫村紑濮嬶紝瀹冨氨涓鐩村浜庡紑鍙戜箣涓?<br /> <br /> 銆銆涓烘敮鎸佹墍鏈夎繖浜涘姛鑳斤紝DOM4J 浣跨敤鎺ュ彛鍜屾娊璞″熀鏈被鏂規(guī)硶銆侱OM4J 澶ч噺浣跨敤浜?API 涓殑 Collections 綾伙紝浣嗘槸鍦ㄨ澶氭儏鍐典笅錛屽畠榪樻彁渚涗竴浜涙浛浠f柟娉曚互鍏佽鏇村ソ鐨勬ц兘鎴栨洿鐩存帴鐨勭紪鐮佹柟娉曘傜洿鎺ュソ澶勬槸錛岃櫧鐒?DOM4J 浠樺嚭浜嗘洿澶嶆潅鐨?API 鐨勪唬浠鳳紝浣嗘槸瀹冩彁渚涗簡姣?JDOM 澶у緱澶氱殑鐏墊椿鎬с?<br /> <br /> 銆銆鍦ㄦ坊鍔犵伒媧繪с乆Path 闆嗘垚鍜屽澶ф枃妗e鐞嗙殑鐩爣鏃訛紝DOM4J 鐨勭洰鏍囦笌 JDOM 鏄竴鏍風殑錛氶拡瀵?Java 寮鍙戣呯殑鏄撶敤鎬у拰鐩磋鎿嶄綔銆傚畠榪樿嚧鍔涗簬鎴愪負姣?JDOM 鏇村畬鏁寸殑瑙e喅鏂規(guī)錛屽疄鐜板湪鏈川涓婂鐞嗘墍鏈?Java/XML 闂鐨勭洰鏍囥傚湪瀹屾垚璇ョ洰鏍囨椂錛屽畠姣?JDOM 鏇村皯寮鴻皟闃叉涓嶆紜殑搴旂敤紼嬪簭琛屼負銆?<br /> <br /> 銆銆DOM4J 鏄竴涓潪甯擱潪甯鎬紭縐鐨凧ava XML API錛屽叿鏈夋ц兘浼樺紓銆佸姛鑳藉己澶у拰鏋佺鏄撶敤浣跨敤鐨勭壒鐐癸紝鍚屾椂瀹冧篃鏄竴涓紑鏀炬簮浠g爜鐨勮蔣浠躲傚浠婁綘鍙互鐪嬪埌瓚婃潵瓚婂鐨?Java 杞歡閮藉湪浣跨敤 DOM4J 鏉ヨ鍐?XML錛岀壒鍒煎緱涓鎻愮殑鏄繛 Sun 鐨?JAXM 涔熷湪鐢?DOM4J銆?<br /> <br /> 銆銆Bean鏂囦歡錛?<br /> <br /> 銆銆package com.test; <br /> <br /> 銆銆import java.io.*; <br /> 銆銆import java.util.*; <br /> 銆銆import org.dom4j.*; <br /> 銆銆import org.dom4j.io.*; <br /> <br /> 銆銆public class MyXMLReader { <br /> <br /> 銆銆public static void main(String arge[]) { <br /> 銆銆long lasting = System.currentTimeMillis(); <br /> 銆銆try { <br /> 銆銆銆File f = new File("data_10k.xml"); <br /> 銆銆銆SAXReader reader = new SAXReader(); <br /> 銆銆銆Document doc = reader.read(f); <br /> 銆銆銆Element root = doc.getRootElement(); <br /> 銆銆銆Element foo; <br /> 銆銆銆for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { <br /> 銆銆銆銆foo = (Element) i.next(); <br /> 銆銆銆銆System.out.print("杞︾墝鍙風爜:" + foo.elementText("NO")); <br /> 銆銆銆銆System.out.println(" 杞︿富鍦板潃:" + foo.elementText("ADDR")); <br /> 銆銆銆} <br /> 銆銆} catch (Exception e) { <br /> 銆銆銆e.printStackTrace(); <br /> 銆銆} <br /> 銆銆System.out.println("榪愯鏃墮棿錛? + (System.currentTimeMillis() - lasting) + " 姣"); <br /> 銆銆} <br /> 銆銆} <br /> <br /> 銆銆10k娑堣楁椂闂達細109 78 109 31 <br /> 銆銆100k娑堣楁椂闂達細297 359 172 312 <br /> 銆銆1000k娑堣楁椂闂達細2281 2359 2344 2469 <br /> 銆銆10000k娑堣楁椂闂達細20938 19922 20031 21078 <br /> <br /> 銆銆JDOM 鍜?DOM 鍦ㄦц兘嫻嬭瘯鏃惰〃鐜頒笉浣籌紝鍦ㄦ祴璇?10M 鏂囨。鏃跺唴瀛樻孩鍑恒傚湪灝忔枃妗f儏鍐典笅榪樺煎緱鑰冭檻浣跨敤 DOM 鍜?JDOM銆傝櫧鐒?JDOM 鐨勫紑鍙戣呭凡緇忚鏄庝粬浠湡鏈涘湪姝e紡鍙戣鐗堝墠涓撴敞鎬ц兘闂錛屼絾鏄粠鎬ц兘瑙傜偣鏉ョ湅錛屽畠紜疄娌℃湁鍊煎緱鎺ㄨ崘涔嬪銆傚彟澶栵紝DOM 浠嶆槸涓涓潪甯稿ソ鐨勯夋嫨銆侱OM 瀹炵幇騫挎硾搴旂敤浜庡縐嶇紪紼嬭璦銆傚畠榪樻槸璁稿鍏跺畠涓?XML 鐩稿叧鐨勬爣鍑嗙殑鍩虹錛屽洜涓哄畠姝e紡鑾峰緱 W3C 鎺ㄨ崘錛堜笌鍩轟簬闈炴爣鍑嗙殑 Java 妯″瀷鐩稿錛夛紝鎵浠ュ湪鏌愪簺綾誨瀷鐨勯」鐩腑鍙兘涔熼渶瑕佸畠錛堝鍦?JavaScript 涓嬌鐢?DOM錛夈?<br /> <br /> 銆銆SAX琛ㄧ幇杈冨ソ錛岃繖瑕佷緷璧栦簬瀹冪壒瀹氱殑瑙f瀽鏂瑰紡銆備竴涓?SAX 媯嫻嬪嵆灝嗗埌鏉ョ殑XML嫻侊紝浣嗗茍娌℃湁杞藉叆鍒板唴瀛橈紙褰撶劧褰揦ML嫻佽璇誨叆鏃訛紝浼氭湁閮ㄥ垎鏂囨。鏆傛椂闅愯棌鍦ㄥ唴瀛樹腑錛夈?<br /> <br /> 銆銆鏃犵枒錛孌OM4J鏄繖鍦烘祴璇曠殑鑾瘋儨鑰咃紝鐩墠璁稿寮婧愰」鐩腑澶ч噺閲囩敤 DOM4J錛屼緥濡傚ぇ鍚嶉紟榧庣殑 Hibernate 涔熺敤 DOM4J 鏉ヨ鍙?XML 閰嶇疆鏂囦歡銆傚鏋滀笉鑰冭檻鍙Щ妞嶆э紝閭e氨閲囩敤DOM4J鍚э紒</p> <img src ="http://m.tkk7.com/lcs/aggbug/162077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/lcs/" target="_blank">lk</a> 2007-11-21 14:04 <a href="http://m.tkk7.com/lcs/archive/2007/11/21/162077.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java瑙f瀽XMLhttp://m.tkk7.com/lcs/archive/2007/11/21/162076.htmllklkWed, 21 Nov 2007 06:02:00 GMThttp://m.tkk7.com/lcs/archive/2007/11/21/162076.htmlhttp://m.tkk7.com/lcs/comments/162076.htmlhttp://m.tkk7.com/lcs/archive/2007/11/21/162076.html#Feedback0http://m.tkk7.com/lcs/comments/commentRss/162076.htmlhttp://m.tkk7.com/lcs/services/trackbacks/162076.html 鐢ㄤ簡涓涓媜rg.w3c.dom瑙f瀽錛屼笉澶柟渚匡紝鐗瑰埆鏄繘琛屼慨鏀規(guī)椂銆?br /> 鍚庢潵鎵懼埌浜哾om4j榪欎釜宸ュ叿鍖呫傛柟渚垮浜嗐傚懙銆傘傝褰曚竴涓嬶紝浠ュ悗鐢ㄥ緱鐫銆?br />

棣栧厛閫氳繃org.w3c.dom瑙f瀽
InitFromXML.java

package system.init;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


/**
* @author yymoth
*
*/
public class InitFromXML {

    private HashMap prop = new HashMap(); //瀛樺偍浠庢枃浠朵腑璇誨彇鐨勬墍鏈夐厤緗俊鎭?br />     private HashMap temp = new HashMap(); //浼犲叆鐨勫弬鏁幫紝鐢ㄦ潵鐢熸垚鏂扮殑XML閰嶇疆鏂囦歡
    private static String xmlFileName ="SystemInit.xml";
    private static String xmlFilePath = InitFromXML.class.getClassLoader().getResource(xmlFileName).getPath();
    
    private static InitFromXML instance = null;
    
    public static synchronized InitFromXML getInstance()
    {
        if(instance == null)
        {    instance = new InitFromXML();    }
        
        return instance;
    }
    
    /**
     *
     */
    public InitFromXML() {
        super();
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new InitFromXML().getSystemProperty();
        
        HashMap temp = new HashMap();
        temp.put("outputImageDevice","outputImageDeviceVVVVV");
        temp.put("inputSceneFilePath","inputSceneFilePathVVVVV");
        temp.put("fetchIRADFactor",0.11);
        temp.put("fcpr_upLimit",111);
        
        new InitFromXML().updateSystemProperty(temp);
    
    }

    /**
     * 鎶妜ml鏂囦歡璇誨彇鍐呭錛屽湪鍐呭瓨涓駭鐢焏om鏍? 淇敼瀹冪殑鍐呭涓嶄細褰卞搷鏂囦歡;
     * @return
     */
    public HashMap getSystemProperty()
    {        
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db;
        try {
            db = dbf.newDocumentBuilder();
            System.out.println("寮濮嬭鍙栭厤緗枃浠? " + xmlFilePath);
            Document d = db.parse(xmlFilePath);
            
            NodeList nl = d.getElementsByTagName("outputImageDevice");
            Node mynode = nl.item(0);
            String outputImageDevice = mynode.getFirstChild().getNodeValue();
            prop.put("outputImageDevice",outputImageDevice);
            
            System.out.println("杈撳嚭璺緞= "+prop.get("outputImageDevice").toString());
            
            nl = d.getElementsByTagName("inputSceneFilePath");
            mynode = nl.item(0);
            String inputSceneFilePath = mynode.getFirstChild().getNodeValue();
            prop.put("inputSceneFilePath",inputSceneFilePath);
            
            System.out.println("杈撳叆鍦烘櫙璺緞= "+prop.get("inputSceneFilePath"));
            
            
            nl = d.getElementsByTagName("fetchIRADFactor");
            mynode = nl.item(0);
            String fetchIRADFactor= mynode.getFirstChild().getNodeValue();
            prop.put("fetchIRADFactor",fetchIRADFactor);
            
            System.out.println("絀洪棽Render閫夋嫨鍥犲瓙= "+prop.get("fetchIRADFactor"));
            
            
            nl = d.getElementsByTagName("fcpr_upLimit");
            mynode = nl.item(0);
            int fcpr_upLimit = Integer.parseInt(mynode.getFirstChild().getNodeValue().toString().trim());
            prop.put("fcpr_upLimit",fcpr_upLimit);
            
            System.out.println("鍗曞彴Render鏈澶ф覆鏌撳撫鏁? "+prop.get("fcpr_upLimit"));
            
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return this.prop;
    }
    
    
    /**
     * 鏇存柊緋葷粺鍙傛暟
     *
     */
    public void updateSystemProperty(HashMap temp)
    {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = null;
        
        try {
            db = dbf.newDocumentBuilder();
            Document doc = db.parse(xmlFilePath);
            
            
            NodeList nl = doc.getElementsByTagName("outputImageDevice");
            Node mynode = nl.item(0);
            mynode.setTextContent((String)temp.get("outputImageDevice"));
            //mynode.setNodeValue((String)temp.get("outputImageDevice"));
        
            
            nl = doc.getElementsByTagName("inputSceneFilePath");
            mynode = nl.item(0);
            mynode.setTextContent((String)temp.get("inputSceneFilePath"));
        
            nl = doc.getElementsByTagName("fetchIRADFactor");
            mynode = nl.item(0);
            mynode.setTextContent((String)temp.get("fetchIRADFactor"));
            
            nl = doc.getElementsByTagName("fcpr_upLimit");
            mynode = nl.item(0);
            mynode.setTextContent((String)temp.get("fcpr_upLimit"));
            
            
            writeToXML(doc);
            
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    
        
        
        
    }
    
    
    /**
     * 鎶奃ocument瀵硅薄鐢熸垚鏂囦歡;
     * @param doc
     */
    
    public void writeToXML(Document doc)
    {
        TransformerFactory tfactory = TransformerFactory.newInstance();
        try {
            Transformer tf = tfactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(new File(xmlFilePath));
            tf.transform(source,result);
        } catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}




涓嬮潰榪欎釜鏄氳繃DOM4J錛?浣跨敤涔嬪墠瑕佷笅杞絛om4j鍖呫傚畼鏂圭珯鐐癸細www.dom4j.org

Dom4j.java


package wcrs_master.test;

/**
* @author yymoth
*
*/
import java.io.IOException;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.Attribute;

import system.init.InitFromXML;

import java.io.FileWriter;

public class Dom4j {
    private static String xmlFileName ="SystemInit.xml";
    private static String xmlFilePath = Dom4j.class.getClassLoader().getResource(xmlFileName).getPath();
    private static Dom4j instance = null;
    public Dom4j() {
    }

    public static synchronized Dom4j getInstance()
    {
        if(instance == null)
        {    instance = new Dom4j();    }
        
        return instance;
    }
    
    
    
    public Document parse(String sfile) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File(sfile));
        return document;
    }

    public void update(HashMap temp) throws IOException {
        Document document = null;
            try {
                document = new Dom4j().parse(xmlFilePath);
                Element root = document.getRootElement(); //寰楀埌鏍硅妭鐐圭洰褰?br />                 Iterator iter = root.elementIterator();
                System.out.println("\r\n****** 鑾峰彇鐨勬暟鎹涓?******");
                System.out.println(xmlFilePath);
                while (iter.hasNext()) {
                    Element titleElement = (Element) iter.next();
                    // 淇敼xml鍏冪礌
                    System.out.print(titleElement.getName()+"  ==  ");
                    System.out.println(titleElement.getData().toString());
                    
                    if (titleElement.getName().equals("outputImageDevice")) {
                        titleElement.setText(temp.get("outputImageDevice").toString());
                    }
                    if (titleElement.getName().equals("fetchIRADFactor")) {
                        titleElement.setText(temp.get("fetchIRADFactor").toString());
                    }
                    if (titleElement.getName().equals("inputSceneFilePath")) {
                        titleElement.setText(temp.get("inputSceneFilePath").toString());
                    }
                    if (titleElement.getName().equals("fcpr_upLimit")) {
                        titleElement.setText(temp.get("fcpr_upLimit").toString());
                    }
                }

            
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            writeToXML(document);

    }

    /**
     * 鎶妜ml鏂囦歡璇誨彇鍐呭錛屽湪鍐呭瓨涓駭鐢焏om鏍? 淇敼瀹冪殑鍐呭涓嶄細褰卞搷鏂囦歡;
     * @return
     */
    public HashMap getSystemProperty()
    {
        HashMap temp = new HashMap();
        Document document ;
        try {
            document = new Dom4j().parse(xmlFilePath);
            Element root = document.getRootElement(); //寰楀埌鏍硅妭鐐圭洰褰?br />             Iterator iter = root.elementIterator();
            while(iter.hasNext())
            {
                Element titleElement = (Element) iter.next();
                temp.put(titleElement.getName(),titleElement.getData());
            }
            
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return temp;
    }
    
    
    /**
     * 鍐欏叆鏂囦歡
     * @param document
     */
    
    public void writeToXML(Document document)
    {
        // 杈撳嚭鍏ㄩ儴鍘熷鏁版嵁錛屽湪緙栬瘧鍣ㄤ腑鏄劇ず
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer;
        try {
            writer = new XMLWriter(System.out, format);
            //System.out.println("\r\n------------------Start------------------");
            writer.write(document);  
            //System.out.println("\r\n-------------------End-------------------");
            writer.close();
            // 杈撳嚭鍏ㄩ儴鍘熷鏁版嵁錛屽茍鐢ㄥ畠鐢熸垚鏂扮殑鎴戜滑闇瑕佺殑XML鏂囦歡
            XMLWriter writer2 = new XMLWriter(new FileWriter(new File(
                    xmlFilePath)), format);
            writer2.write(document); //杈撳嚭鍒版枃浠?br />             writer2.close();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
    
    
    
    public static void main(String[] args) {
        
        HashMap temp = new HashMap();
        
        temp.put("outputImageDevice","outputImageDeviceVVVVV");
        temp.put("inputSceneFilePath","inputSceneFilePathVVVVV");
        temp.put("fetchIRADFactor",0.11);
        temp.put("fcpr_upLimit",11);
        
        Dom4j dom4j = new Dom4j();
        try {
            dom4j.update(temp);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}



lk 2007-11-21 14:02 鍙戣〃璇勮
]]>
Jdom浣跨敤鎸囧崡http://m.tkk7.com/lcs/archive/2007/11/20/161897.htmllklkTue, 20 Nov 2007 09:04:00 GMThttp://m.tkk7.com/lcs/archive/2007/11/20/161897.htmlhttp://m.tkk7.com/lcs/comments/161897.htmlhttp://m.tkk7.com/lcs/archive/2007/11/20/161897.html#Feedback0http://m.tkk7.com/lcs/comments/commentRss/161897.htmlhttp://m.tkk7.com/lcs/services/trackbacks/161897.html瀵?span xml:lang="EN-US">xml鏂囨。鐨勮В鏋?span xml:lang="EN-US">java涓湁寰堝縐嶆柟娉曪紝渚嬪浣跨敤dom銆?span xml:lang="EN-US">sax銆?span xml:lang="EN-US">jdom絳夌瓑錛岀浉姣斾箣涓嬶紝鎴戣寰楄繕鏄?span xml:lang="EN-US">jdom姣旇緝鏂逛究銆備笅闈粙緇嶄竴涓?span xml:lang="EN-US">jdom鐨勫熀鏈嬌鐢ㄦ柟娉曪紝涓嶅涔嬪榪樿鍚勪綅緗戝弸涔嬩氦銆傝阿璋紒

鏈鏂扮殑jdom鍙互鍒頒粬鐨勭綉绔欙細http://www.jdom.org鍘諱笅杞斤紝鐜板湪鐨勭増鏈槸1.0鐗堬紝涓嬭澆涔嬪悗灝嗗緱鍒?span xml:lang="EN-US">jdom-1.0.zip鏂囦歡錛岃В鍘嬪悗榪涘叆build鏂囦歡澶瑰皢鐪嬪埌涓涓悕涓?span xml:lang="EN-US">jdom.jar鐨勫寘錛岃繖涓氨鏄?span xml:lang="EN-US">jdom鐨勭被鍖呬簡錛屽皢瀹冨姞鍒頒綘鐨?span xml:lang="EN-US">classpath閲屽氨鍙互浣跨敤jdom鎻愪緵鐨勫悇縐嶅鐞?span xml:lang="EN-US">xml鐨勭被鍜屼粬浠殑鏂規(guī)硶浜嗐傚簲璇ユ敞鎰忕殑鏄湪瑙e帇鍚庣殑鏂囦歡澶歸噷榪樻湁涓涓?span xml:lang="EN-US">lib鏂囦歡澶癸紝閲岄潰淇濆瓨鐨勬槸浣跨敤jdom鐨勭幆澧冨寘錛屼笉榪囨垜鍦ㄦ垜鐨?span xml:lang="EN-US">jdk1.4涓嬩嬌鐢ㄦ病寮曠敤榪欎簺鍖呬竴鏍峰ソ鐢紝涓嶇煡閬撴槸jdk1.4涓凡緇忓寘鍚簡榪欎簺涓滆タ榪樻槸鍘熸潵鎴戠殑eclipse宸茬粡寮曠敤浜嗚繖浜涘寘錛屽懙鍛點?/span>

濂戒簡錛屼功褰掓浼狅紝鐜板湪寮濮嬩粙緇?span xml:lang="EN-US">jdom鍖呯殑浣跨敤銆?br />


   jdom
鍖呯殑緇撴瀯鍖呮嫭錛?/span>

org.jdom                鍖呭惈浜嗘墍鏈夌殑xml鏂囨。瑕佺礌鐨?span xml:lang="EN-US">java綾?/span>

org.jdom.adapters         鍖呭惈浜嗕笌dom閫傞厤鐨?span xml:lang="EN-US">java綾?/span>

org.jdom.filter            鍖呭惈浜?span xml:lang="EN-US">xml鏂囨。鐨勮繃婊ゅ櫒綾?/span>

org.jdom.input            鍖呭惈浜嗚鍙?span xml:lang="EN-US">xml鏂囨。鐨勭被

org.jdom.output           鍖呭惈浜嗗啓鍏?span xml:lang="EN-US">xml鏂囨。鐨勯浄

org.jdom.transform        鍖呭惈浜嗗皢jdom xml鏂囨。鎺ュ彛杞崲涓哄叾浠?span xml:lang="EN-US">xml鏂囨。鎺ュ彛

org.jdom.xpath            鍖呭惈浜嗗xml鏂囨。xpath鎿嶄綔鐨勭被

涓嬮潰灝嗛氳繃涓涓緥瀛愪粙緇?span xml:lang="EN-US">jdom鐨勫父鐢ㄦ搷浣?/span>

鐢熸垚xml鏂囨。錛?/span>

涓嬮潰鐨勭被灝嗙敓鎴愪竴涓?span xml:lang="EN-US">xml鏂囨。錛?/span>

/*

 * Created on 2004-10-9

 *

 * 鍐欏叆xml鏂囦歡鐨勪緥瀛?/span>

 */

/**

 * @author lnman

 *

 * To change the template for this generated type comment go to

 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

 */

import java.io.*;

import org.jdom.*;

import org.jdom.output.*;

public class WriteXML

{

    public void BuildXML() throws Exception

    {

        Element root,student,number,name,age;

               

        root = new Element("student-info"); //鐢熸垚鏍瑰厓绱狅細student-info  

        student = new Element("student");      //鐢熸垚鍏冪礌錛?span xml:lang="EN-US">student,璇ュ厓绱犱腑灝嗗寘鍚厓绱?span xml:lang="EN-US">number,name,age

        number = new Element("number");

        name = new Element("name");

        age = new Element("age");

       

        Document doc = new Document(root);    //灝嗘牴鍏冪礌妞嶅叆鏂囨。doc涓?/span>

       

        number.setText("001");

        name.setText("lnman");

        age.setText("24");

        student.addContent(number);

        student.addContent(name);

        student.addContent(age);

        root.addContent(student);

       

        Format format = Format.getCompactFormat();

        format.setEncoding("gb2312");           //璁劇疆xml鏂囦歡鐨勫瓧絎︿負gb2312

        format.setIndent("    ");               //璁劇疆xml鏂囦歡鐨勭緝榪涗負4涓┖鏍?/span>

       

        XMLOutputter XMLOut = new XMLOutputter(format);//鍦ㄥ厓绱犲悗鎹㈣錛屾瘡涓灞傚厓绱犵緝鎺掑洓鏍?/span>

        XMLOut.output(doc, new FileOutputStream("studentinfo.xml")); 

       

    }

   

    public static void main(String[] args) throws Exception

    {

        WriteXML w = new WriteXML();

        System.out.println("Now we build an XML document .....");

        w.BuildXML();

        System.out.println("finished!");

    }

}

鐢熸垚鐨?span xml:lang="EN-US">xml鏂囨。涓猴細

<?xml version="1.0" encoding="gb2312"?>

<student-info>

    <student>

        <number>001</number>

        <name>lnman</name>

        <age>24</age>

    </student>

</student-info>

璇誨彇xml鏂囨。鐨勪緥瀛愶細

/*

 * Created on 2004-10-9

 *

 *鐢?span xml:lang="EN-US">jdom璇誨彇xml鏂囨。鐨勪緥瀛?/span>

 *

 */

/**

 * @author lnman

 *

 * To change the template for this generated type comment go to

 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

 */

import org.jdom.output.*;

import org.jdom.input.*;

import org.jdom.*;

import java.io.*;

import java.util.*;

public class ReadXML

{

   

    public static void main(String[] args) throws Exception

    {

       

       

        SAXBuilder builder = new SAXBuilder();

        Document read_doc = builder.build("studentinfo.xml");

        Element stu = read_doc.getRootElement();

        List list = stu.getChildren("student");

        for(int i = 0;i < list.size();i++)

        {

            Element e = (Element)list.get(i);

            String str_number = e.getChildText("number");

            String str_name = e.getChildText("name");

            String str_age = e.getChildText("age");

            System.out.println("---------STUDENT--------------");

            System.out.println("NUMBER:" + str_number);

            System.out.println("NAME:" + str_name);

            System.out.println("AGE:" + str_age);

            System.out.println("------------------------------");

            System.out.println();

        }      

    }

}

Xpath渚嬪瓙錛?/span>

JDOM鐨勫叧浜?span xml:lang="EN-US">XPATH鐨?span xml:lang="EN-US">api鍦?span xml:lang="EN-US">org.jdom.xpath榪欎釜鍖呴噷銆傝繖涓寘涓嬶紝鏈変竴涓娊璞$被XPath.java鍜屽疄鐜扮被JaxenXPath.java錛?nbsp;浣跨敤鏃跺厛鐢?span xml:lang="EN-US">XPath綾葷殑闈欐佹柟娉?span xml:lang="EN-US">newInstance(String xpath)寰楀埌XPath瀵硅薄錛岀劧鍚庤皟鐢ㄥ畠鐨?span xml:lang="EN-US">selectNodes(Object context)鏂規(guī)硶鎴?span xml:lang="EN-US">selectSingleNode(Object context)鏂規(guī)硶錛屽墠鑰呮牴鎹?span xml:lang="EN-US">xpath璇彞榪斿洖涓緇勮妭鐐?span xml:lang="EN-US">(List瀵硅薄)錛涘悗鑰呮牴鎹竴涓?span xml:lang="EN-US">xpath璇彞榪斿洖絎﹀悎鏉′歡鐨勭涓涓妭鐐?span xml:lang="EN-US">(Object綾誨瀷)銆傝鐪?span xml:lang="EN-US">jdom-1.0鑷甫鐨勮寖渚嬬▼搴忥細
     
瀹冨垎鏋愬湪web.xml鏂囦歡涓殑娉ㄥ唽鐨?span xml:lang="EN-US">servlet鐨勪釜鏁板強鍙傛暟涓暟錛屽茍杈撳嚭瑙掕壊鍚嶃?
web.xml
鏂囦歡錛?
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
    "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
-->

<web-app>
    <servlet>
        <servlet-name>snoop</servlet-name>
        <servlet-class>SnoopServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>file </servlet-name>
        <servlet-class>ViewFile</servlet-class>
        <init-param>
            <param-name>initial</param-name>
            <param-value>1000</param-value>
            <description>The initial value for the counter  <!-- optional --></description>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mv</servlet-name>
        <url-pattern>*.wm</url-pattern>
    </servlet-mapping>
    <distributed/>

    <security-role>
      <role-name>manager</role-name>
      <role-name>director</role-name>
      <role-name>president</role-name>
    </security-role>
</web-app>

澶勭悊紼嬪簭錛?
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import org.jdom.xpath.*;

/**
 * <p><code>XPathReader</code> demonstrates how to
 *   read a Servlet 2.2 Web Archive file using XPath.
 * </p>
 * 
 * @author Jason Hunter
 * @version 1.0
 */
public class XPathReader {
    
    public static void main(String[] args) throws IOException, JDOMException {
        if (args.length != 1) {
            System.err.println("Usage: java XPathReader web.xml");
            return;
        }
        String filename = args[0];//
浠庡懡浠よ杈撳叆web.xml
        PrintStream out = System.out;

        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(new File(filename));//
寰楀埌Document瀵硅薄

        // Print servlet information
        XPath servletPath = XPath.newInstance("http://servlet");//,
閫夋嫨浠繪剰璺緞涓?span xml:lang="EN-US">servlet鍏冪礌
        List servlets = servletPath.selectNodes(doc);//
榪斿洖鎵鏈夌殑servlet鍏冪礌銆?

        out.println("This WAR has "+ servlets.size() +" registered servlets:");
        Iterator i = servlets.iterator();
        while (i.hasNext()) {//
杈撳嚭servlet淇℃伅
            Element servlet = (Element) i.next();
            out.print(""t" + servlet.getChild("servlet-name")
                                    .getTextTrim() +
                      " for " + servlet.getChild("servlet-class")
                                       .getTextTrim());
            List initParams = servlet.getChildren("init-param");
            out.println(" (it has " + initParams.size() + " init params)"); 
        }
            
        // Print security role information
        XPath rolePath = XPath.newInstance("http://security-role/role-name/text()");
        List roleNames = rolePath.selectNodes(doc);//
寰楀埌鎵鏈夌殑瑙掕壊鍚?

        if (roleNames.size() == 0) {
            out.println("This WAR contains no roles");
        } else {
            out.println("This WAR contains " + roleNames.size() + " roles:");
            i = roleNames.iterator();
            while (i.hasNext()) {//
杈撳嚭瑙掕壊鍚?
                out.println(""t" + ((Text)i.next()).getTextTrim());
            }
        }
    }    
}

杈撳嚭緇撴灉:
C:"java>java   XPathReader web.xml
This WAR has 2 registered servlets:
        snoop for SnoopServlet (it has 0 init params)
        file for ViewFile (it has 1 init params)
This WAR contains 3 roles:
        manager
        director
        president



lk 2007-11-20 17:04 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 美女黄频视频大全免费的| 久久国产乱子伦精品免费强| 久久夜色精品国产噜噜噜亚洲AV| 好男人看视频免费2019中文| 久久精品无码精品免费专区| 亚洲AV无码成人网站在线观看| 4480yy私人影院亚洲| 亚洲性猛交XXXX| 亚洲国产精品成人| 免费黄色app网站| 黄页网站在线看免费| 99久久人妻精品免费二区| 成人片黄网站色大片免费观看cn| 国产偷国产偷亚洲高清人| 亚洲日本在线电影| 亚洲制服丝袜中文字幕| 亚洲国产超清无码专区| 亚洲三级电影网站| 亚洲AV区无码字幕中文色| 亚洲国产精品无码一线岛国 | 国产精品高清视亚洲精品| 亚洲视频免费观看| 77777_亚洲午夜久久多人| 亚洲最大福利视频网站| 亚洲欧洲日产国码久在线观看 | 精品一区二区三区无码免费视频| 丝袜足液精子免费视频| 国产精品永久免费| 最近中文字幕免费大全| 成人爽a毛片免费| 国产va在线观看免费| 日韩av无码久久精品免费 | 亚洲国产精品久久网午夜| 亚洲欧洲日韩综合| 亚洲91精品麻豆国产系列在线| 亚洲一级毛片视频| 亚洲第一第二第三第四第五第六 | 免费观看男人免费桶女人视频| 好爽…又高潮了毛片免费看| 日本一区二区三区日本免费| 国产成人免费片在线观看|