Simone Tripodi wrote:
> 
> Hi Dmitriy,
> you don't you use just the commons-digester rules to map the xml to your
> map?
> It's also a betwixt dependency library, and maybe it could be easier.
> Best regards,
> Simone
> 
Well, i've made some changes since first time. The XML now looks like
following:

<metadata>
        <group name="...">
                <entry name="...">
                        <header>...</header>
                        <width>...</width>
                </entry>
                <entry name="...">
                        <hideable>...</hideable>
                        <tooltip>...</tooltip>
                </entry>
        </group>
        <group name="...">
                <entry name="...">
                        <align>...</align>
                        <width>...</width>
                </entry>
        </group>
</metadata>

And as Simone suggested, i've used commons Digester instead of Betwixt:

        Digester digester = new Digester();
                
        digester.setValidating(false);
                
        digester.addObjectCreate("metadata", Hashtable.class);
                
        digester.addObjectCreate("metadata/group", ListOrderedMap.class);
                
        Rule r = new CallMethodRule(1, "put", 2);
        digester.addRule("metadata/group", r);
        digester.addCallParam("metadata/group", 0, "name");
        digester.addCallParam("metadata/group", 1, true);
                
        // MetadataEntry is a simple bean that holds values of <entry/> section
        digester.addObjectCreate("metadata/group/entry", MetadataEntry.class);
                
        r = new SetNestedPropertiesRule();
        digester.addRule("metadata/group/entry", r);
                
        r = new CallMethodRule(1, "put", 2);
        digester.addRule("metadata/group/entry", r);
        digester.addCallParam("metadata/group/entry", 0, "name");
        digester.addCallParam("metadata/group/entry", 1, true);

        // a little later

        InputStream is =
servletContext.getResourceAsStream("WEB-INF/classes/metadata.xml");
        Object result = digester.parse(is);

And it works. The resulting data structure is: Map<String, Map<String,
MetadataEntry>>
Simone, thanks! =)
-- 
View this message in context: 
http://www.nabble.com/Commons-betwixt-0.8---reading-Map-from-XML-tp19255879p19336473.html
Sent from the Commons - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to