2016-02-22 41 views
1

我見過很多地方在使用java pojo類
@XmlRootElement(name="Class_Name")註解。將java類轉換爲xml需要什麼?

該文檔說明它用於將java類轉換爲xml。

但是需要做什麼?
有人可以解釋一下嗎?

+0

一個可能的原因爲Java對象轉換爲XML將通過網絡發送(一個流行的替代XML是JSON)。 –

+0

您可以參考: http://blog.bdoughan.com/2012/07/jaxb-and-root-elements.html – Suyash

回答

2

爲什麼要將java類轉換爲XML有很多種可能的原因。但其中一個最常見的原因,雖然不一定總是,但是因爲您需要將的類信息存儲在其他地方,以便動態地重新創建。也就是說,有一個轉換和解除轉換。

對此的一個常見示例是:通過傳遞包含有關該類的信息的網絡/ Web的XML消息,消息的接收者可以創建代理/動態類並使用代理/動態類來執行某些操作在接收方。

使用XML可能帶來的另一個好處是接收方可能不一定使用java讀取或處理轉換後的java類。它可以通過任何其他語言(如C#,Python等)進行處理。出於類似的原因,您也可能會發現一個類轉換爲JSON並傳遞。

0

當你通過網絡發送java對象時,它應該以某種方式序列化爲一些可以發送的字符串。

有一定的格式通過網絡發送的序列化數據,所以xml是因爲xml具有反序列化的/它哪些對象可序列化描述格式/,則非常像java或在許多許多語言中其中之一標準如SOAP web服務等

0

例如產品是你的目標類:

@XmlRootElement 
public class Product { 
    private String name; 
    private int quantity = 0; 

    public String getName() { 
     return name; 
    } 

    @XmlElement 
    public void setName(String name) { 
     this.name = name; 
    } 

    public int getQuantity() { 
     return quantity; 
    } 

    @XmlElement 
    public void setQuantity(int quantity) { 
     this.quantity = quantity; 
    } 
} 

二傳手必須標明@XmlElement註釋

接下來我們需要做的編組操作:

File file = new File("test.xml"); 

SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
JAXBContext jaxbContext = JAXBContext.newInstance(Product.class); 
Marshaller marshaller = jaxbContext.createMarshaller(); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
marshaller.marshal(product, file); 
相關問題