`
keke_wanwei
  • 浏览: 125992 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

相关推荐

    Digester读取XML学习

    【标题】:“Digester读取XML学习” 在Java开发中,处理XML文件是常见的任务,尤其是在构建配置驱动的应用程序时。Apache Commons Digester是一个强大的工具,它允许开发者将XML文件解析为Java对象,通过匹配XML...

    Digester解析XML文件

    本文将深入探讨如何使用Digester解析XML文件,以及在实际项目中如何应用。 首先,让我们了解什么是Apache Commons Digester。这是一个Java库,它的主要功能是读取XML文件,并基于一系列预先定义的规则(Rule),...

    Digester读取xml教程.rar

    Digester与DOM、SAX、JAXB等其他XML解析库相比,更注重于将XML转换为Java对象,适合于需要频繁读写XML的场景。但在大型项目中,可能需要考虑其复杂性和维护性。 通过本教程,你应该对使用Apache Commons Digester...

    digester解析XML文件实例

    在Java开发中,XML文件常用于存储数据,配置信息等,因为其结构清晰、易于读写。Digester是Apache Commons项目中的一个库,专门用于将XML文件内容映射到Java对象,实现XML到Java对象的自动绑定。这个"digester解析...

    digester解析xml的问题.pdf

    3. **解析 XML**:创建好 Digester 实例后,使用 `parse` 方法读取 XML 文件并执行预定义的规则。代码示例如下: ```java Digester digester = new Digester(); digester.setValidating(false); // 关闭验证,...

    使用Digester解析XML文档示例

    Digester能够根据定义好的规则自动将XML文档转换成Java对象,非常适合用在配置文件读取、数据交换等场景。 #### 二、Digester的基本原理 1. **SAX事件驱动**:Digester内部使用SAX事件模型来解析XML文档。当解析器...

    Digester的XML规则文件配置

    通过以上分析可以看出,使用`org.apache.commons.digester.xmlrules`包中的类,我们可以通过编写XML规则文件来灵活地控制Digester对XML数据的解析过程。这种方式不仅简化了代码的编写,还提高了程序的可维护性和扩展...

    digester解析xml必备包.rar

    在Digester解析XML时,BeanUtils可以用来方便地读取和设置Java对象的属性值,使得数据绑定更加灵活。 使用这些库,开发者可以创建一个XML配置文件,定义XML结构与Java对象之间的映射规则。例如,XML文件中的每个`...

    digester组件简化了xml文件处理操作

    以下是一个具体的使用示例,展示如何使用Digester处理XML文件: ```java // 导入必要的包 import org.apache.commons.digester.Digester; import org.apache.commons.logging.Log; import org.apache.commons....

    利用Digester把XML转换成为Java对象

    以下是一个简化的`deregister`方法示例,展示了如何使用Digester从XML文件中读取图表配置信息: ```java public void deregister(URL url) throws IOException, SAXException { InputStream is = new ...

    使用Apache的Digester来解析XML文档

    5. **解析XML**:最后,使用配置好的 Digester 对象解析XML文件: ```java Root root = null; try (InputStream is = new FileInputStream("path_to_xml_file.xml")) { root = digester.parse(is); } catch ...

    XML的解析之——使用Digester

    最后,调用`digester.parse()`方法读取XML文件并执行消化过程: ```java InputStream in = new FileInputStream("config.xml"); try { Config config = (Config) digester.parse(in); System.out.println(config)...

    java反射,Digester解析xml文档

    3. **解析XML**:使用 Digester 的 `parse()` 方法读取XML文件,根据预先定义的规则进行处理。 4. **结果处理**:最后,Digester会生成一个对象模型,代表了XML文档的内容。 以下是一个简单的 Digester 使用示例: ...

    java 操作xml文件(包含xml文件和对应jar包)

    我们可能需要读取XML文件中的数据,例如,使用DOM API的`DocumentBuilderFactory`和`DocumentBuilder`来创建`Document`对象,然后通过`getElementsByTagName`、`getElementsByTagnameNS`等方法查找元素,再用`...

    digester解析xml 所需jar包

    `Digester`使用DOM4J来读取和处理XML文档。 3. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库简化了JavaBeans的使用,提供了一些便捷的方法来操作对象的属性。`Digester`利用BeanUtils来反射调用Java...

    digester解析xml

    当解析XML时,Digester会逐行读取XML文档,每当遇到一个匹配的元素,就会执行与之关联的规则。这个过程可以分为以下几步: 1. **初始化**:首先,我们需要创建一个Digester实例,并设置必要的配置,如命名空间处理...

    xml解析commons-digester的demo

    这个示例演示了如何使用Apache Commons Digester解析XML文件,将XML数据转换为Java对象。通过定义规则,我们可以轻松地处理复杂的XML结构,并将它们映射到Java对象模型中。这在处理大量配置数据或需要从XML文件加载...

    digester用法测试案例

    3. **解析XML**: 使用`parse()`方法读取XML文件并执行规则链。每当匹配到XML文档中的一个元素,对应的规则就会被执行。 4. **结果处理**: 解析完成后,Java对象模型已经构建完毕,可以进行后续的业务处理。 在实际...

    用到digester项目,直接解析存入数据库

    标题中的“用到digester项目,直接解析存入数据库”指的是使用Apache Digester库来解析XML文件,并将解析后的数据直接存储到数据库中。Apache Digester是一个Java库,它允许开发者通过规则配置来关联XML文档的元素与...

    Digester_jar

    它使用SAX(Simple API for XML)解析器来读取XML文档,而不是DOM(Document Object Model),这使得处理大型XML文件时更有效率。 Apache Commons Digester通过定义一系列规则,这些规则可以匹配XML文档中的元素,...

Global site tag (gtag.js) - Google Analytics