commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simone Tripodi <simonetrip...@apache.org>
Subject Re: [digester] how can I print children tags instead of only tag content ?
Date Sun, 15 May 2011 00:09:30 GMT
IIUC, no matters which kind of children your node has, you're
interested only on the first child, right?

http://people.apache.org/~simonetripodi/
http://www.99soft.org/



On Sat, May 14, 2011 at 10:51 PM, Patrick Diviacco
<patrick.diviacco@gmail.com> wrote:
> ps. the children names are completely different, there is no way to use a
> regex to discriminate between them.
>
>
>
> On 14 May 2011 22:50, Patrick Diviacco <patrick.diviacco@gmail.com> wrote:
>
>> hi Simone,
>>
>> ok, it was just matter of adding one line :)
>>
>> By the way I still have an issue in the case of multiple children and I
>> don't know how to solve it. If I have a document containing:
>>
>> <parent>
>> <child1></child1>
>> <child2></child2>
>> </parent>
>>
>> I don't want to  trigger the method twice, but just once... in other terms
>> I want to trigger the method only once per document and only if the <parent>
>> tag has at least 1 child.
>>
>> I copy my code again:
>>
>> Digester digester = new Digester();
>> digester.setRules( new RegexRules( new SimpleRegexMatcher() ) );
>>
>> digester.addCallMethod("collection/doc/categ/*",  "myMethod", 0);
>>
>> thanks
>> Patrick
>>
>>
>>
>>
>> On 14 May 2011 21:54, Simone Tripodi <simonetripodi@apache.org> wrote:
>>
>>> Hi Patrick,
>>> I thought it was more intuitive, sounds we have to update de doc.
>>> Anyway, to reply to your questions:
>>>
>>> 1) just create the Digester instance, set the RegexRules and start
>>> binding your rules:
>>>
>>> Digester digester = new Digester();
>>> digester.setRules( new RegexRules( new SimpleRegexMatcher() ) );
>>> digester.addCallMethod( "collection/doc/categ/*",  "myMethod", 0 );
>>>
>>> 2) yes, as reported in the javadoc I pointed: "* matches any sequence
>>> of none, one or more characters" like in the bash syntax; if you want
>>> to apply kind of filters, bind the rules with restrictive patterns
>>> (prefixes/postfixes); ie. given the rule:
>>>
>>> digester.addCallMethod( "collection/doc/categ/patt*",  "myMethod", 0 );
>>>
>>> collection/doc/categ/patt -> matches
>>> collection/doc/categ/pattern -> matches
>>> collection/doc/categ/patteRn -> matches
>>> collection/doc/categ/pattern -> matches
>>> collection/doc/categ/paBtern -> does not match
>>>
>>> HTH, have a nice weekend,
>>> Simo
>>>
>>> http://people.apache.org/~simonetripodi/
>>> http://www.99soft.org/
>>>
>>>
>>>
>>> On Sat, May 14, 2011 at 8:58 PM, Patrick Diviacco
>>> <patrick.diviacco@gmail.com> wrote:
>>> > Thanks,
>>> >
>>> > 1) Is there any tutorial explaining how to use it ?
>>> >
>>> > 2) In my case, if I have more than one child, is the pattern detected
>>> > multiple times ?
>>> >
>>> > help is very appreciated!
>>> >
>>> >
>>> >
>>> >
>>> > On 14 May 2011 01:36, Simone Tripodi <simonetripodi@apache.org> wrote:
>>> >
>>> >> Hi Patrick,
>>> >> follow the Konstantin's suggestion, that's the way to achieve it. Have
>>> >> a read also to
>>> >>
>>> http://commons.apache.org/digester/apidocs/index.html?org/apache/commons/digester/SimpleRegexMatcher.html
>>> >>
>>> >> HTH,
>>> >> Simo
>>> >>
>>> >> http://people.apache.org/~simonetripodi/
>>> >> http://www.99soft.org/
>>> >>
>>> >>
>>> >>
>>> >> On Fri, May 13, 2011 at 8:28 PM, Konstantin Kolinko
>>> >> <knst.kolinko@gmail.com> wrote:
>>> >> > 2011/5/13 Patrick Diviacco <patrick.diviacco@gmail.com>:
>>> >> >> mhm, sorry.. just to be more clear.
>>> >> >>
>>> >> >> Is there a way in Commons Digester to trigger a method only
if a xml
>>> >> element
>>> >> >> has a child ?
>>> >> >>
>>> >> >> i.e.
>>> >> >> digester.addCallMethod("collection/doc/categ/*",  "myMethod",
0);
>>> >> >>
>>> >> >> This doesn't work.
>>> >> >
>>> >> > The "*" is allowed in the prefix only, as documented in
>>> >> >
>>> >> >
>>> >>
>>> http://commons.apache.org/digester/commons-digester-2.1/docs/api/org/apache/commons/digester/RulesBase.html
>>> >> >
>>> >> > You may try to use a different rules matcher. See "RegexMatchers"
>>> chapter
>>> >> here:
>>> >> > http://commons.apache.org/digester/commons-digester-2.1/core.html
>>> >> >
>>> >> >
>>> >> >> But it is actually what I need. If element <categ> has
at
>>> >> >> least a child, then trigger myMethod
>>> >> >
>>> >> > Best regards,
>>> >> > Konstantin Kolinko
>>> >> >
>>> >> > ---------------------------------------------------------------------
>>> >> > 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
>>> >>
>>> >>
>>> >
>>>
>>> ---------------------------------------------------------------------
>>> 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


Mime
View raw message