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 09:28:44 GMT
IIUC = if I understand correctly ;)

A quick hint: why don't you manage the logic inside your business
logic? I mean, you configure the digester:

    Digester digester = new Digester();
    digester.setRules( new RegexRules( new SimpleRegexMatcher() ) );

    digester.addCallMethod( "collection/doc/categ/*",  "myMethod", 0 );

then check the 'myMethod' has already been invoked:

    boolean check = false;

    public void myMethod( String arg )
    {
        if ( !check )
        {
            System.out.println( arg );
            check = true;
        }
    }

HTH, let me know your progress!
Simo

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



On Sun, May 15, 2011 at 8:58 AM, Patrick Diviacco
<patrick.diviacco@gmail.com> wrote:
> what does IIUC mean ?
>
> Yeah. I mean, more exactly, I just need to know if the element has at least
> a child:
>
> bool = hasChild(myPattern)
>
> thanks
>
> On 15 May 2011 02:09, Simone Tripodi <simonetripodi@apache.org> wrote:
>
>> 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
>>
>>
>

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


Mime
View raw message