You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Arshika Mishra <Ar...@lntinfotech.com> on 2007/02/28 12:31:55 UTC

[Digester] Problem using recursion in xml rule file

Hi!

I am trying to parse an XML file using digester but getting a problem. The 
file has a recursive tag. The format of the file given below:

<dpr-domain name="AircraftPerformances">
                <dpr-data-category name="AircraftClass" 
systemOption="FULLOLDI">
                        <dpr-attribute name="landingSpeed" 
systemOption="HALFOLDI"/>
                        <dpr-data-category name="holdingParameters" 
systemOption="HALFOLDI">
                                <dpr-attribute name="maximumspeed1" 
systemOption="FULLOLDI"/>
                        </dpr-data-category>
                        <dpr-data-category name="turnRate" 
systemOption="FULLOLDI,HALFOLDI">
                                <dpr-attribute name="maximumspeed2" 
systemOption="FULLOLDI"/>
                                <dpr-data-category name="accelerateRate" 
systemOption="HALFOLDI">
                                        <dpr-attribute 
name="maximumspeed21" systemOption="FULLOLDI"/>
                                        <dpr-data-category 
name="descendRate" systemOption="HALFOLDI">
                                                <dpr-attribute 
name="maximumspeed211" systemOption="FULLOLDI"/>
                                        </dpr-data-category>
                                </dpr-data-category>
                        </dpr-data-category>
                </dpr-data-category>
</dpr-domain>

The rule file I have written for this is:
<digester-rules>
        <pattern value="dpr-domain">
        <object-create-rule classname="check.Domain"/>
                <pattern value="*/dpr-data-category">
                        <object-create-rule 
classname="check.DataCategory"/>
                        <set-properties-rule/>
                        <pattern value="dpr-attribute">
                                <object-create-rule 
classname="check.Attribute"/>
                                <set-properties-rule/>
                                <set-next-rule methodname="addAttributes" 
/>
                        </pattern>
                        <set-next-rule methodname="addDataCategory" 
paramtype="check.DataCategory"/> 
                </pattern>
                </pattern> 
</digester-rules>

But this is not working. If the "dpr-domain" tag is removed, then it 
works. Please help me by giving a solution for this problem. 



Regards,
Arshika Mishra



______________________________________________________________________

Re: [Digester] Problem using recursion in xml rule file

Posted by Craig McClanahan <cr...@apache.org>.
On 2/28/07, Arshika Mishra <Ar...@lntinfotech.com> wrote:
> Hi!
>
> I am trying to parse an XML file using digester but getting a problem. The
> file has a recursive tag. The format of the file given below:
>
> <dpr-domain name="AircraftPerformances">
>                 <dpr-data-category name="AircraftClass"
> systemOption="FULLOLDI">
>                         <dpr-attribute name="landingSpeed"
> systemOption="HALFOLDI"/>
>                         <dpr-data-category name="holdingParameters"
> systemOption="HALFOLDI">
>                                 <dpr-attribute name="maximumspeed1"
> systemOption="FULLOLDI"/>
>                         </dpr-data-category>
>                         <dpr-data-category name="turnRate"
> systemOption="FULLOLDI,HALFOLDI">
>                                 <dpr-attribute name="maximumspeed2"
> systemOption="FULLOLDI"/>
>                                 <dpr-data-category name="accelerateRate"
> systemOption="HALFOLDI">
>                                         <dpr-attribute
> name="maximumspeed21" systemOption="FULLOLDI"/>
>                                         <dpr-data-category
> name="descendRate" systemOption="HALFOLDI">
>                                                 <dpr-attribute
> name="maximumspeed211" systemOption="FULLOLDI"/>
>                                         </dpr-data-category>
>                                 </dpr-data-category>
>                         </dpr-data-category>
>                 </dpr-data-category>
> </dpr-domain>
>
> The rule file I have written for this is:
> <digester-rules>
>         <pattern value="dpr-domain">
>         <object-create-rule classname="check.Domain"/>
>                 <pattern value="*/dpr-data-category">
>                         <object-create-rule
> classname="check.DataCategory"/>
>                         <set-properties-rule/>
>                         <pattern value="dpr-attribute">
>                                 <object-create-rule
> classname="check.Attribute"/>
>                                 <set-properties-rule/>
>                                 <set-next-rule methodname="addAttributes"
> />
>                         </pattern>
>                         <set-next-rule methodname="addDataCategory"
> paramtype="check.DataCategory"/>
>                 </pattern>
>                 </pattern>
> </digester-rules>


>
> But this is not working. If the "dpr-domain" tag is removed, then it
> works. Please help me by giving a solution for this problem.
>

Arshika,

I never use the XML format for defining rules, so I'm a little fuzzy
on how it really works.  However, it seems to me that you would *not*
want to nest your category pattern inside the domain pattern when you
use the "*" prefix for recursion.  The problem is that the composite
pattern will be trying to match "dpr-domain/*/dpr-data-category" and I
do not think Digester knows how to deal with wildcards in the middle
like that.

Try something along these lines instead:

<digester-rules>

  <pattern value="dpr-domain">
    ... rules for a new domain ...
  </pattern>

  <pattern value="*/dpr-data-category">
    ... rules for a new category ...
    <pattern value="dpr-data-attribute">
      ... rules for a new attribute ...
    </pattern>
  </pattern>

</digester-rules>

Craig


>
>
> Regards,
> Arshika Mishra
>
>
>
> ______________________________________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Re: [Digester] Problem using recursion in xml rule file

Posted by Vikram <in...@yahoo.com>.
Hi Arshika,
even i am having the same problem with a project i am working on...
it is working on removing the tag and doesn't work with the tag...
if u have got the solution...please mail me the same...
thanks
:)
Vikram...



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org