XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] Best way to create an XML document

"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]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS