On 2/28/07, Arshika Mishra <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]