2017-09-15 32 views
0

我只是想將簡單的Java對象轉換爲XML,並且在Java對象中,沒有一個元素被提及爲@XmlRootElement@XmlAttribute。這可能與JAXB有關嗎?將Java對象轉換爲XML,不包含任何Java類中的@XmlRootElement

我的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.... 

回答

0

您可以通過使用從 javax.xml.bind.JAXBmarshal方法元帥而不需要JAXB註釋Java對象。

類,定義用於普通,簡單使用JAXB的便利方法:

從其JavaDoc中的說明。
此類中定義的方法是組合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> 
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);