commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian T Trimble <christ...@meltmedia.com>
Subject Re: [Digester] Can digester match an unknown element?
Date Thu, 27 Mar 2008 16:04:42 GMT

On Mar 27, 2008, at 2:29 AM, Allen,Eva wrote:

> We are working with an entity which sometimes adds new xml elements
> without remembering to tell us about them.  We would like to be able  
> to
> log a warning whenever we encounter an element that we don't know  
> about.
>
> Is there any way to do this with digester?
>
> Specifically, we have really simple xml files that in essence, look  
> like
>
> this:
> <xmlrecord>
>    <good>acceptedValue1< /good>
>    <good>acceptedValue2</good>
>    <bad>rejectedValue1< /bad>
>        .
>        .
>        .
> </xmlrecord>
>
> and the digester rules file looks like this:
> <digester-rules>
>    <pattern value="xmlrecord">
>        do some stuff
>        <pattern value="good">
>            do more stuff
>        </pattern>
>        <pattern value="bad">
>            do even more stuff
>        </pattern>
>    </pattern>
> </digester-rules>
>
> All of a sudden one day, we got an "xmlrecord" with an "unworthy"
> element (names have been changed here to protect the innocent).   We
> would have liked to log a warning that we didn't know what to do  
> with an
>
> unworthy element, but I can find no way to tell digester how to parse
> that.  I've tried patterns "xmlrecord/*" and "*/*" but neither one of
> those works.  I've looked at the digester documentation including the
> wiki page.  Everybody talks about generalized pattern matching but
> nobody talks about unknown elements.  Is there any way to do this with
> digester?
>
>
> -- 
> Eva Allen
> Consulting Software Engineer, OCLC, Inc.
> 6565 Kilgour Pl., Dublin, OH  43017
> 614.764.6009 | allene@oclc.org
> Views contained herein are my own; they do not necessarily reflect  
> those
>
> of my employer
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>

Eva,

   I am not sure how to do this with the xml based rules  
configuration, but you can create a default rule using the digester  
directly.  To do this,
you need to replace the Rules instance on your digester with a  
WithDefaultRulesWrapper and set the default rule to do your logging.   
Something like:

Digester digester = new Digester();

  // Configure your rules.
...

WithDefaultRulesWrapper defaultRules = new  
WithDefaultRulesWrapper(digester.getRules());
defaultRules.add(new LogUnknownElementRule());
digester.setRules(defaultRules);

Now, the LogUnknownElementRule will be called when an element does not  
match any of the rules in your rules configuration.

--Christian Trimble

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


Mime
View raw message