velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <ge...@optonline.net>
Subject Re: wrapping XML document as JavaBeans?
Date Wed, 03 Oct 2001 01:12:35 GMT
On 10/2/01 9:04 PM, "Mike Williams" <mikew@cortexebusiness.com.au> wrote:

> Say I have the following XML document:
> 
>  <bean>
>    <name>UserInfo</name>
>    <field>
>      <name>id</name>
>      <type>int</type>
>    </field>
>    <field>
>      <name>name</name>
>      <type>java.lang.String</type>
>    </field>
>  </bean>     
> 
> I want to make the data therein available to a Velocity template.  I could
> do what Anakia does, and simply place a JDOM representation in the
> Context.  However, then I'd end up with template expressions like
> 
> $field.getChild("name").getText()
> 
> when I'd much rather write:
> 
> $field.name
> 
> I could create explicit model JavaBean objects, like Torque does, but I
> might want to deal with lots of different XML documents, and don't want to
> have to generate a set of JavaBeans for each DTD.
> 
> Are there any other options?  Would it be feasible to create a generic
> wrapper-ojbect that allows <field><name>id</name></field> to
be accessed as
> "$field.name" ?

Sure - I would think that's pretty easy if you want simple access.

For example, implement on your wrapper-object

Public Object get(String)

And return the child node (in the same object class).

$field.name will make velocity call get("name")

You might also choose to build something path-ish so you can access any
level...

geir

-- 
Geir Magnusson Jr.     geirm@optonline.net
System and Software Consulting
"They that can give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety." - Benjamin Franklin



Mime
View raw message