Spring oxm编组和解组对象列表

时间:2014-04-15 14:36:30

标签: java xml spring marshalling

我们正在使用Spring进行项目,我需要编组和解组对象列表 从XML到XML。 由于各种原因,业务对象本身没有@XmlRootElement注释,这些注释无法更改。

我可以使用包装类通过javax.xml轻松完成此操作。我使用了一个带有数字ID和描述字段的简单testObject:

/**
  * testObject for xml convert
  *
  */
package xmlconvert;

import java.io.File;
import java.io.IOException;
import java.util.List;

//import javax.xml.bind.JAXBContext;
//import javax.xml.bind.JAXBException;
//import javax.xml.bind.Marshaller;
//import javax.xml.bind.Unmarshaller;
//import javax.xml.bind.annotation.XmlRootElement;
//import javax.xml.bind.annotation.XmlType;

public class testObject
{
    private static final long serialVersionUID = 1L;

    public testObject()
    {
        setObjectid( 0L );
        setDescription( " " );
    }

    public testObject( Long oid, String desc )
    {
        setObjectid( oid );
        setDescription( desc );
    }

    private Long objectid;

    public Long getObjectid()
    {
        return this.objectid;
    }
    public void setObjectid( Long oid )
    {
        this.objectid = oid;
    }

    private String description;

    public String getDescription()
    {
        return this.description;
    }
    public void setDescription( String d )
    {
        this.description = d;
    }

}

我的包装类看起来像这样:

/**
 *  JAXBToList
 * 
 *  An object that holds the list of objects to convert.
 *
 */
package xmlconvert;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;

import xmlconvert.testObject;

@XmlRootElement(name="testObjects")
public class JAXBToList
{
    protected List<testObject> list;

    public JAXBToList()
    {
        list = new ArrayList<testObject>();
    }

    public JAXBToList( List<testObject> list )
    {
        this.list = list;
    }

    @XmlElement(name="testObject")
    public List<testObject> getList()
    {
        return (List<testObject>) this.list;
    }

}

当我将这些对象的ArrayList转换为XML时,代码如下所示:

  @XmlElements({
        @XmlElement(name="testObject", 
                          type=testObject.class)
  })
  public static void convertListToXML( JAXBToList objectList, 
                                            String xmlFilePath )
              throws IOException, JAXBException {
        JAXBContext jc = JAXBContext.newInstance( JAXBToList.class );
        marshaller = jc.createMarshaller();
        marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT,  Boolean.TRUE );
        marshaller.marshal( objectList, 
                            new StreamResult( new FileOutputStream(xmlFilePath) ) );
  }

我想使用Spring marshaller和unmarshaller来做到这一点,但是似乎没有办法设置上下文来使用oxm类Jaxb2Marshaller中的JAXBToList类,或者其他类型的marshallers。 / p>

我知道有一个集合Jaxb Context Properties方法,但是没有关于我需要设置的指令,或者如果使用它会像设置jaxb Context那样做,如上所示。

有没有人有链接说明oxm如何用于对象列表?谷歌搜索没有太多。

0 个答案:

没有答案