用Digester读取XML文件

阅读更多
xml 代码

用Digester将XML文件读取到java中。

要导入的XML文件:

xml 代码
  1. xml version="1.0" encoding="GB2312"?>  
  2. <PACKET type="RESPONSE" version="1.0" >  
  3. <HEAD>  
  4.     <REQUEST_TYPE>50REQUEST_TYPE>         
  5.     <TYPE_CODE>1TYPE_CODE>  
  6.     <ERROR_MESSAGE>ERROR_MESSAGE>                     
  7. HEAD>  
  8. <BODY>  
  9.     <BASE_PART>  
  10.         <CLAIM_CODE>000A00004108000002RICLAIM_CODE>  
  11.     BASE_PART>  
  12.     <CLAIM_LIST>  
  13.         <CLAIM_DATA>  
  14.             <CLAIM_COMPANY>A000CLAIM_COMPANY>  
  15.             <REPORT_NO>0001REPORT_NO>  
  16.             <CLAIM_NO>2565485CLAIM_NO>  
  17.             <POLICY_NO>C131031158978POLICY_NO>  
  18.             <ACCIDENT_TIME>2004012212ACCIDENT_TIME>  
  19.             <REPORT_TIME>2005061208REPORT_TIME>  
  20.             <ENDCASE_DATE>20050712ENDCASE_DATE>  
  21.             <UNCLAIM_AMOUNT>200.0UNCLAIM_AMOUNT>  
  22.             <CLAIM_AMOUNT>111.2CLAIM_AMOUNT>  
  23.             <STATUS>12333STATUS>  
  24.             <ACCIDENT_PLACE>AAAACCIDENT_PLACE>  
  25.             <ACCIDENT_DESCRIPTION>ADFACCIDENT_DESCRIPTION>  
  26.             <LIABILITY_AMOUNT>3LIABILITY_AMOUNT>  
  27.         CLAIM_DATA>  
  28.         <CLAIM_DATA>  
  29.             <CLAIM_COMPANY>A001CLAIM_COMPANY>  
  30.             <REPORT_NO>0002REPORT_NO>  
  31.             <CLAIM_NO>中文CLAIM_NO>  
  32.             <POLICY_NO>是不会POLICY_NO>  
  33.             <ACCIDENT_TIME>ACCIDENT_TIME>  
  34.             <REPORT_TIME>REPORT_TIME>  
  35.             <ENDCASE_DATE>ENDCASE_DATE>  
  36.             <UNCLAIM_AMOUNT>UNCLAIM_AMOUNT>  
  37.             <CLAIM_AMOUNT>222.2CLAIM_AMOUNT>  
  38.             <STATUS>211STATUS>  
  39.             <ACCIDENT_PLACE>12ACCIDENT_PLACE>  
  40.             <ACCIDENT_DESCRIPTION>ADFACCIDENT_DESCRIPTION>  
  41.             <LIABILITY_AMOUNT>3LIABILITY_AMOUNT>  
  42.         CLAIM_DATA>  
  43.     CLAIM_LIST>  
  44. BODY>  
  45. PACKET>  

 

下面是对应的Digester文件:

 

xml 代码
  1. xml version="1.0"?>  
  2.   
  3.   PUBLIC "-//Jakarta Apache //DTD digester-rules XML V1.0//EN"    
  4.     "http://jakarta.apache.org/commons/digester/dtds/digester-rules.dtd">  
  5. <digester-rules>  
  6.      <pattern value="PACKET">  
  7.         <set-properties-rule/>  
  8.         <pattern value="HEAD">  
  9.             <object-create-rule classname="com.xxxx.claim.dto.Head"/>  
  10.              <bean-property-setter-rule pattern="REQUEST_TYPE" propertyname="requestType"/>  
  11.              <bean-property-setter-rule pattern="TYPE_CODE"  propertyname="typeCode"/>  
  12.              <bean-property-setter-rule pattern="ERROR_MESSAGE"  propertyname="errorMessage"/>  
  13.              <set-next-rule methodname="setHead"/>  
  14.         pattern>  
  15.          <pattern value="BODY">  
  16.              <object-create-rule classname="com.xxxx.claim.dto.Body"/>  
  17.              <pattern value="BASE_PART">  
  18.                  <object-create-rule classname="com.xxxx.claim.dto.BasePart"/>  
  19.                  <bean-property-setter-rule pattern="CLAIM_CODE" propertyname="claimCode"/>  
  20.                  <set-next-rule methodname="setBasePart"/>  
  21.              pattern>  
  22.               <pattern value="CLAIM_LIST/CLAIM_DATA">  
  23.                   <object-create-rule classname="com.xxxx.claim.dto.ClaimData"/>  
  24.                   <bean-property-setter-rule pattern="CLAIM_COMPANY"  propertyname="claimCompany"/>  
  25.                    <bean-property-setter-rule pattern="REPORT_NO"  propertyname="reportNo"/>  
  26.                    <bean-property-setter-rule pattern="CLAIM_NO"  propertyname="claimNo"/>  
  27.                    <bean-property-setter-rule pattern="POLICY_NO"  propertyname="policyNo"/>  
  28.                    <bean-property-setter-rule pattern="ACCIDENT_TIME"  propertyname="accidentTime"/>  
  29.                    <bean-property-setter-rule pattern="REPORT_TIME"  propertyname="reportTime"/>  
  30.                    <bean-property-setter-rule pattern="ENDCASE_DATE"  propertyname="endcaseDate"/>  
  31.                    <bean-property-setter-rule pattern="UNCLAIM_AMOUNT"  propertyname="unclaimAmount"/>  
  32.                    <bean-property-setter-rule pattern="CLAIM_AMOUNT"  propertyname="claimAmount"/>  
  33.                    <bean-property-setter-rule pattern="STATUS"  propertyname="status"/>  
  34.                    <bean-property-setter-rule pattern="ACCIDENT_PLACE"  propertyname="accidentPlace"/>  
  35.                    <bean-property-setter-rule pattern="ACCIDENT_DESCRIPTION"  propertyname="accidentDescription"/>  
  36.                    <bean-property-setter-rule pattern="LIABILITY_AMOUNT"  propertyname="liabilityAmount"/>  
  37.                   <set-next-rule methodname="addClaimData"/>  
  38.               pattern>    
  39.               <set-next-rule methodname="setBody"/>  
  40.          pattern>  
  41.      pattern>  
  42. digester-rules>  

java调用文件:

java 代码
  1. package com.xxxx.claim.util;   
  2.   
  3. import java.io.InputStream;   
  4. import java.net.URL;   
  5.   
  6. import junit.framework.TestCase;   
  7.   
  8. import org.apache.commons.digester.Digester;   
  9. import org.apache.commons.digester.xmlrules.DigesterLoader;   
  10.   
  11. import com.xxxx.claim.dto.PlatformPacket;   
  12.   
  13. /**  
  14.  * @author wanwei  
  15.  * @since 2007-5-28  
  16.  */  
  17. public class DigesterTest extends TestCase   
  18. {   
  19.     private static boolean testXmlRule = true;   
  20.   
  21.     public void testXmlRule()   
  22.     {   
  23.         if( !testXmlRule ) return;   
  24.         URL rulesURL = ClassLoader.getSystemResource("report_back_rule.xml");   
  25.         Digester d = DigesterLoader.createDigester(rulesURL);   
  26.         PlatformPacket pp = new PlatformPacket();   
  27.         d.push(pp);   
  28.         try  
  29.         {   
  30.             InputStream xmlFile = ClassLoader.getSystemResourceAsStream("report_back.xml");   
  31.             //xmlFile = CommonUtils.inputStream2String(xmlFile);   
  32.             d.parse(xmlFile);   
  33.         } catch( java.io.IOException ioe )   
  34.         {   
  35.             System.out.println("Error reading input file:" + ioe.getMessage());   
  36.             System.exit(-1);   
  37.         } catch( org.xml.sax.SAXException se )   
  38.         {   
  39.             System.out.println("Error parsing input file:" + se.getMessage());   
  40.             System.exit(-1);   
  41.         }   
  42.         System.out.println(pp.getVersion());   
  43.     }   
  44. }   

剩下的就是对应的java dto了。

java 代码
  1. package com.xxxx.claim.dto;   
  2.   
  3. /**  
  4.  * @author wanwei  
  5.  * @since 2007-5-28  
  6.  */  
  7. public class PlatformPacket   
  8. {   
  9.     private String type = "";   
  10.     private String version = "";   
  11.     private Head head;   
  12.     private Body body;   
  13.     public String getType()   
  14.     {   
  15.         return type;   
  16.     }   
  17.     public void setType(String type)   
  18.     {   
  19.         this.type = type;   
  20.     }   
  21.     public String getVersion()   
  22.     {   
  23.         return version;   
  24.     }   
  25.     public void setVersion(String version)   
  26.     {   
  27.         this.version = version;   
  28.     }   
  29.     public void setHead(Head head)   
  30.     {   
  31.         this.head = head;   
  32.     }   
  33.     public Head getHead()   
  34.     {   
  35.         return head;   
  36.     }   
  37.     public Body getBody()   
  38.     {   
  39.         return body;   
  40.     }   
  41.     public void setBody(Body body)   
  42.     {   
  43.         this.body = body;   
  44.     }   
  45.        
  46. }   
java 代码
  1. package com.xxxx.claim.dto;   
  2.   
  3. /**  
  4.  * @author wanwei  
  5.  * @since 2007-5-28  
  6.  */  
  7. public class Head   
  8. {   
  9.     private String requestType ;   
  10.     private String typeCode ;   
  11.     private String errorMessage ;   
  12.     public String getErrorMessage()   
  13.     {   
  14.         return errorMessage;   
  15.     }   
  16.     public void setErrorMessage(String errorMessage)   
  17.     {   
  18.         this.errorMessage = errorMessage;   
  19.     }   
  20.     public String getRequestType()   
  21.     {   
  22.         return requestType;   
  23.     }   
  24.     public void setRequestType(String requestType)   
  25.     {   
  26.         this.requestType = requestType;   
  27.     }   
  28.     public String getTypeCode()   
  29.     {   
  30.         return typeCode;   
  31.     }   
  32.     public void setTypeCode(String typeCode)   
  33.     {   
  34.         this.typeCode = typeCode;   
  35.     }   
  36. }   
java 代码
  1. package com.xxxx.claim.dto;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.List;   
  5.   
  6. /**  
  7.  * @author wanwei  
  8.  * @since 2007-5-28  
  9.  */  
  10. public class Body   
  11. {   
  12.     private BasePart basePart;   
  13.     private List claimList = new ArrayList();   
  14.     public void addClaimData(ClaimData badyData)   
  15.     {   
  16.         claimList.add(badyData);   
  17.     }   
  18.     public BasePart getBasePart()   
  19.     {   
  20.         return basePart;   
  21.     }   
  22.   
  23.     public void setBasePart(BasePart basePart)   
  24.     {   
  25.         this.basePart = basePart;   
  26.     }   
  27.   
  28.     public List getClaimList()   
  29.     {   
  30.         return claimList;   
  31.     }   
  32.   
  33.     public void setClaimList(List claimList)   
  34.     {   
  35.         this.claimList = claimList;   
  36.     }   
  37. }   
java 代码
  1. package com.xxxx.claim.dto;   
  2.   
  3. /**  
  4.  * claimData  
  5.  * @author wanwei  
  6.  * @since 2007-6-5  
  7.  */  
  8. public class ClaimData   
  9. {   
  10.     private String claimCompany;   
  11.     private String reportNo;   
  12.     private String claimNo;   
  13.     private String policyNo;   
  14.     private String accidentTime;   
  15.     private String reportTime;   
  16.     private String endcaseDate;   
  17.     private Double unclaimAmount;   
  18.     private Double claimAmount;   
  19.     private String status;   
  20.     private String accidentPlace;   
  21.     private String accidentDescription;   
  22.     private Double liabilityAmount;   
  23.     public String getAccidentDescription()   
  24.     {   
  25.         return accidentDescription;   
  26.     }   
  27.     public void setAccidentDescription(String accidentDescription)   
  28.     {   
  29.         this.accidentDescription = accidentDescription;   
  30.     }   
  31.     public String getAccidentPlace()   
  32.     {   
  33.         return accidentPlace;   
  34.     }   
  35.     public void setAccidentPlace(String accidentPlace)   
  36.     {   
  37.         this.accidentPlace = accidentPlace;   
  38.     }   
  39.     public String getAccidentTime()   
  40.     {   
  41.         return accidentTime;   
  42.     }   
  43.     public void setAccidentTime(String accidentTime)   
  44.     {   
  45.         this.accidentTime = accidentTime;   
  46.     }   
  47.     public Double getClaimAmount()   
  48.     {   
  49.         return claimAmount;   
  50.     }   
  51.     public void setClaimAmount(Double claimAmount)   
  52.     {   
  53.         this.claimAmount = claimAmount;   
  54.     }   
  55.     public String getClaimCompany()   
  56.     {   
  57.         return claimCompany;   
  58.     }   
  59.     public void setClaimCompany(String claimCompany)   
  60.     {   
  61.         this.claimCompany = claimCompany;   
  62.     }   
  63.     public String getEndcaseDate()   
  64.     {   
  65.         return endcaseDate;   
  66.     }   
  67.     public void setEndcaseDate(String endcaseDate)   
  68.     {   
  69.         this.endcaseDate = endcaseDate;   
  70.     }   
  71.     public Double getLiabilityAmount()   
  72.     {   
  73.         return liabilityAmount;   
  74.     }   
  75.     public void setLiabilityAmount(Double liabilityAmount)   
  76.     {   
  77.         this.liabilityAmount = liabilityAmount;   
  78.     }   
  79.     public String getPolicyNo()   
  80.     {   
  81.         return policyNo;   
  82.     }   
  83.     public void setPolicyNo(String policyNo)   
  84.     {   
  85.         this.policyNo = policyNo;   
  86.     }   
  87.     public String getReportNo()   
  88.     {   
  89.         return reportNo;   
  90.     }   
  91.     public void setReportNo(String reportNo)   
  92.     {   
  93.         this.reportNo = reportNo;   
  94.     }   
  95.     public String getReportTime()   
  96.     {   
  97.         return reportTime;   
  98.     }   
  99.     public void setReportTime(String reportTime)   
  100.     {   
  101.         this.reportTime = reportTime;   

你可能感兴趣的:(XML,Bean,Apache,junit,.net)