Hello Matt This is interesting stuff and we are working in the area and like you have written a transformer which can work between XML and Java among other data structures. I would vote for carrying on with the project. Have you looked at using the XMI / UML modelling approach to define your XML bindings of Java classes ? It looks as though this may be the adopted route in the long term.
regards Wynne Rees ----- Original Message ----- From: "Matt Pickering" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, October 30, 2002 5:37 AM Subject: Using XML to create Java objects > Hello all, > > I use XML on a daily basis in my day job and recently > I've started work on some gaming projects that use XML > to store configuration and game data. One of the most > tedious tasks I've had to deal with in both realms is > the parsing of XML in order to create Java objects, > both simple and complex. > > I know libraries and tools exist to do this, but they > all have one major drawback: they require me to write > code to describe the objects I want to create and map > the XML to them. > > I've written an engine that allows me to express > simple and composite Java objects as XML and have Java > objects come out without any work on my part other > than providing a listener to capture the objects as > they are created. > > The engine uses Java Reflection to construct objects > and call methods. Methods can accept simple > parameters or other objects, which can also be > expressed as nested XML. > > The XML markup has to follow a few simple rules and a > mechanism is provided to allow the user to define > constants that can substitute one value for another as > well as define the tags that map to various objects. > > Here is a simple example of some XML markup that > creates a Java Properties object: > > <properties> > <twgp:alchemy > xmlns:twgp="http://www.wargameproject.org/transmuteml"> > <twgp:mapping parentTag="*" tag="myprops" > class="java.util.Properties"/> > </twgp:alchemy> > <myprops> > <property key="prop1" value="value1"/> > <property key="prop2" value="value2"/> > <!-- Since Properties is a subclass of > Hashtable, the following shows > we can also call put() instead of > setProperty(). --> > <put key="prop3" value="value3"/> > </myprops> > </properties> > > I've been using this engine to built game > configuration files as well as to build config files > for some rules-based code I use in my day job. > > My question to the list is this: Would there be any > interest to the community at large in such an engine? > > I was planning to release the engine along with the > gaming code, but it is being maintained as a separate > codebase. I am willing to break the engine out and > maintain it as a separate project if there is > sufficient interest. > > The engine is general purpose but is scoped for > applications that use XML as configuration data but > don't want the hassle of having to parse the XML to > suit differing requirements. It is not a > serialization mechanism (although I plan to add a > converter to take instantiated objects and dump out > compatible XML markup). It certainly isn't a "be-all, > end-all" solution to the problem of XML-Java > conversion, but can address a decent amount of the > problems that an average developer may face in using > XML and Java. > > If anyone would like to know more, please reply to the > list or me directly. If this ins't the appropriate > forum for this, I do apologize and I will repost this > to the Jakarta list and take my chances there. > > Matt Pickering > > > > > __________________________________________________ > Do you Yahoo!? > HotJobs - Search new jobs daily now > http://hotjobs.yahoo.com/ > > --------------------------------------------------------------------- > In case of troubles, e-mail: [EMAIL PROTECTED] > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
