[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Best way to create an XML document
- From: Michael Glavassevich <mrglavas@ca.ibm.com>
- To: "Andrew Welch" <andrew.j.welch@gmail.com>
- Date: Sat, 12 Apr 2008 18:10:41 -0400
"Andrew Welch" <andrew.j.welch@gmail.com> wrote on 04/12/2008 03:50:57 PM:
> On 12/04/2008, Robert Koberg <rob@koberg.com> wrote:
> >
> > On Sat, 2008-04-12 at 19:20 +0100, Andrew Welch wrote:
> > > It would be really nice if you could just annotate a pojo and
persist
> > > that to XML, ala JPA...
> >
> >
> > You probably know this, but there is:
> >
> > http://java.sun.
> com/javase/6/docs/api/javax/xml/bind/annotation/XmlElement.html
>
> thanks for the pointer - I haven't looked at JAXB for a while...
>
> I was looking for the "top down" approach where you annotate a class
> it just creates the XML for you, as opposed to the "bottom up"
> approach where you supply the schema and it autogenerates the classes.
With JAXB 2.x you can start from existing classes and add whatever
annotations you need to tune the binding. For example a POJO for a
properties file might look like:
@XmlRootElement
public static class Properties {
private List<Property> properties;
@XmlElement(name="property")
public List<Property> getProperties() {
if (properties == null) {
properties = new ArrayList<Property>();
}
return properties;
}
public void setProperties(List<Property> properties) {
this.properties = properties;
}
public void addProperty(Property property) {
getProperties().add(property);
}
}
public static class Property {
private String key;
private String value;
public Property() {}
public Property(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Adding a couple JAXB annotations to the Properties class would be sufficent
to produce:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<properties>
<property>
<key>foo</key>
<value>bar</value>
</property>
<property>
<key>fuzz</key>
<value>buzz</value>
</property>
</properties>
from a few lines of code:
Properties props = new Properties();
props.addProperty(new Property("foo", "bar"));
props.addProperty(new Property("fuzz", "buzz"));
JAXB.marshal(props, System.out);
> Ideally you should be able to just annotate a class with something
> like @XMLEntity, pass it to the entity manager's save() method and
> have it create the XML for you - just like JPA :)
>
> --
> Andrew Welch
> http://andrewjwelch.com
> Kernow: http://kernowforsaxon.sf.net/
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]