Have you tried betwixt?
--
dIon Gillard, Multitask Consulting
Blog:      http://www.freeroller.net/page/dion/Weblog
Work:      http://www.multitask.com.au


Yunfeng Hou <[EMAIL PROTECTED]> wrote on 30/01/2003 09:22:25 PM:

> Commons digester is very powerful, and it is rule
> centered. It makes digester very useful, but at the
> same time, not a easy job to write the rules. To deal
> with a complex XML file, we will have to write many
> rules for each class and it's properties, methods. I
> feel it not very flexible and hard to mantain. What I
> need is the following:
> 1. Using a xml config file to define the relationship
> between Java Class and XML element. (XML rule is a
> step forward, but not enough)
> 2. As simple as castor xml mapping, but still have the
> power of digester.
> 
> With the tool I write myself, marshal an XML document
> to a java object could be much easier. Here's the
> sample.
> I have an mapping file digester.xml.
> =============================================
> <mapping>
>    <include>digester_inc.xml</include>
> 
>    <class name="net.yunfeng.digester.config.MappingInfo"
> xmlName="mapping">
>       <object xmlName="class"
> type="net.yunfeng.digester.config.ClassInfo"
> method="addClass"/>
>       <method name="addInclude" xmlName="include"/>
>    </class>
> 
>    <class name="net.yunfeng.digester.config.ClassInfo"
> xmlName="class">
>       <object
> type="net.yunfeng.digester.config.PropertyInfo"
> method="addProperty"/>
>       <object type =
> "net.yunfeng.digester.config.MethodInfo"
> method="addMethod"/>
>       <object
> type="net.yunfeng.digester.config.ObjectInfo"
> method="addObject"/>
>    </class>
> 
> 
>    <class name="net.yunfeng.digester.config.Methodnfo"
> xmlName="method">
>       <object type="net.yunfeng.digester.config.ParamInfo"
> method="addParam"/>
>    </class>
> 
> 
> </mapping>
> ===============================================
> 
> and digester_inc.xml
> ===============================================
> <mapping>
>    <class
> name="net.yunfeng.digester.config.PropertyInfo"
> xmlName="property"/>
>    <class name="net.yunfeng.digester.config.ObjectInfo"
> xmlName="object"/>
>    <class name="net.yunfeng.digester.config.ParamInfo"
> xmlName="param"/>
> </mapping>
> =================================================
> I can easily read these two files into my config
> classes( I only list two of them)
> 
> MappingInfo.java
> =================================================
> public class MappingInfo {
> 
>   private ArrayList classes = new ArrayList();
>   private ArrayList includes = new ArrayList(); 
>   // and the accessors of these two
> 
>   public void addClass(ClassInfo classInfo) {
>     classes.add(classInfo);
>   }
> 
>   public void addInclude(String include) {
>     includes.add(include);
>   }
> } 
> ================================================
> MethodInfo.java
> ================================================
> public class MethodInfo {
> 
>   private String name;
>   private String xmlName;
>   private ArrayList params = new ArrayList();
>   // and their accessors
> 
>   public void addParam(ParamInfo param) {
>     params.add(param);
>   }
> }
> ================================================
> 
> The code to digest it is:
> ================================================
> URL file =
> DigesterHelper.class.getClassLoader().
> getResource("net/yunfeng/digester/digester.xml");
> DigesterHelper helper = new DigesterHelper(file);
> MappingInfo mappingInfo = (MappingInfo)
> helper.load(file, MappingInfo.class);
> 
> ================================================
> The first statement is get a mapping file;
> second statement is create a helper object and have it
> load the mapping file to later use;
> the last statement is to digester an xml file into an
> specified java class. In this case, it happens to be
> the same of the mapping file. :-)
> 
> Please note that you do not need to specify all the
> properties of a class within the mapping file. The
> tool will automatically add rules for all properties
> of a class. So if the property has the same name as
> the element name of XML, you can just leave the tool
> handle it.
> 
> If you think it worth putting it into the code base,
> will be more than happy to help.
> 
> Yunfeng Hou 
> 
> 
> _________________________________________________________
> Do You Yahoo!? 
> "�Ż����մ�ת�̾�ϲ���� ���ֽ��պ�������"
> http://cn.promo.yahoo.com/holiday/
> ----- Message from Yunfeng Hou <[EMAIL PROTECTED]> on Thu, 30 Jan 
> 2003 18:13:31 +0800 (CST) -----
> 
> To:
> 
> [EMAIL PROTECTED]
> 
> Subject:
> 
> enhancement to digester
> 
> Commons digester is very powerful, and it is rule
> centered. It makes digester very useful, but at the
> same time, not a easy job to write the rules. To deal
> with a complex XML file, we will have to write many
> rules for each class and it's properties, methods. I
> feel it not very flexible and hard to mantain. What I
> need is the following:
> 1. Using a xml config file to define the relationship
> between Java Class and XML element. (XML rule is a
> step forward, but not enough)
> 2. As simple as castor xml mapping, but still have the
> power of digester.
> 
> With the tool I write myself, marshal an XML document
> to a java object could be much easier. Here's the
> sample.
> I have an mapping file digester.xml.
> =============================================
> <mapping>
>    <include>digester_inc.xml</include>
> 
>    <class name="net.yunfeng.digester.config.MappingInfo"
> xmlName="mapping">
>       <object xmlName="class"
> type="net.yunfeng.digester.config.ClassInfo"
> method="addClass"/>
>       <method name="addInclude" xmlName="include"/>
>    </class>
> 
>    <class name="net.yunfeng.digester.config.ClassInfo"
> xmlName="class">
>       <object
> type="net.yunfeng.digester.config.PropertyInfo"
> method="addProperty"/>
>       <object type =
> "net.yunfeng.digester.config.MethodInfo"
> method="addMethod"/>
>       <object
> type="net.yunfeng.digester.config.ObjectInfo"
> method="addObject"/>
>    </class>
> 
> 
>    <class name="net.yunfeng.digester.config.Methodnfo"
> xmlName="method">
>       <object type="net.yunfeng.digester.config.ParamInfo"
> method="addParam"/>
>    </class>
> 
> 
> </mapping>
> ===============================================
> 
> and digester_inc.xml
> ===============================================
> <mapping>
>    <class
> name="net.yunfeng.digester.config.PropertyInfo"
> xmlName="property"/>
>    <class name="net.yunfeng.digester.config.ObjectInfo"
> xmlName="object"/>
>    <class name="net.yunfeng.digester.config.ParamInfo"
> xmlName="param"/>
> </mapping>
> =================================================
> I can easily read these two files into my config
> classes( I only list two of them)
> 
> MappingInfo.java
> =================================================
> public class MappingInfo {
> 
>   private ArrayList classes = new ArrayList();
>   private ArrayList includes = new ArrayList(); 
>   // and the accessors of these two
> 
>   public void addClass(ClassInfo classInfo) {
>     classes.add(classInfo);
>   }
> 
>   public void addInclude(String include) {
>     includes.add(include);
>   }
> } 
> ================================================
> MethodInfo.java
> ================================================
> public class MethodInfo {
> 
>   private String name;
>   private String xmlName;
>   private ArrayList params = new ArrayList();
>   // and their accessors
> 
>   public void addParam(ParamInfo param) {
>     params.add(param);
>   }
> }
> ================================================
> 
> The code to digest it is:
> ================================================
> URL file =
> DigesterHelper.class.getClassLoader().
> getResource("net/yunfeng/digester/digester.xml");
> DigesterHelper helper = new DigesterHelper(file);
> MappingInfo mappingInfo = (MappingInfo)
> helper.load(file, MappingInfo.class);
> 
> ================================================
> The first statement is get a mapping file;
> second statement is create a helper object and have it
> load the mapping file to later use;
> the last statement is to digester an xml file into an
> specified java class. In this case, it happens to be
> the same of the mapping file. :-)
> 
> If you think it worth putting it into the code base,
> will be more than happy to help.
> 
> Yunfeng Hou 
> 
> 
> 
> 
> 
> 
> 
> _________________________________________________________
> Do You Yahoo!? 
> "�Ż����մ�ת�̾�ϲ���� ���ֽ��պ�������"
> http://cn.promo.yahoo.com/holiday/[attachment "digester.zip" deleted
> by dIon Gillard/Multitask Consulting/AU] 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> ForwardSourceID:NT000AADDE 


Reply via email to