将Java对象转换为XML,而不在Java类中使用任何@XmlRootElement

时间:2017-09-15 18:58:39

标签: java jaxb marshalling

我只想将一个简单的Java对象转换为XML,而在Java对象中,没有一个元素被称为@XmlRootElement@XmlAttribute。这可能与JAXB有关吗?

我的Java对象如下所示:

public class myrequest implements java.io.Serializable {
    private java.lang.String id;

    private java.lang.String code;

    private java.lang.String type;

    private java.lang.String name;

    private java.lang.String count;
and getters and setters....

2 个答案:

答案 0 :(得分:0)

您可以使用课程中的marshal方法编组Java对象而无需JAXB注释 javax.xml.bind.JAXB

引用其javadoc:

  

定义JAXB常见,简单使用的便捷方法的类   此类中定义的方法是便捷方法,它结合了JAXBContext,Unmarshaller和Marshaller中的几个基本操作。它们被设计为JAXB新手的首选方法。

您可以使用它,例如:

myrequest obj = new myrequest();
obj.setId("1");
obj.setCode("2");
obj.setCount("3");
JAXB.marshal(obj, System.out);

您将获得以下XML输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myrequest>
    <code>2</code>
    <count>3</count>
    <id>1</id>
</myrequest>

答案 1 :(得分:0)

是;如果你想这样做,那么你需要创建一个JAXBElement<myrequest>并将其传递给编组程序,而不是直接将myrequest传递给编组程序。例如:

myrequest request = ...;

JAXBContext context = new JAXBContext(myrequest.class);
Marshaller marshaller = context.createMarshaller();

// Create a JAXBElement wrapper
JAXBElement<myrequest> element = new JAXBElement<>(request);

// Pass that to the marshaller
marshaller.marshall(element, System.out);