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]