2014-09-25 28 views
1

我使用javax.xml.bind.*(我相信你稱爲JAXB)將一些相當複雜的類序列化爲XML。通過javax.xml.bind的XML序列化

我的問題是,我似乎必須在任何地方列出名稱空間,我使用特定的元素。請參閱:

@XmlRootElement(namespace="http://www.example.org/mynamespace") 
public class Root { 

    @XmlElement(namespace="http://www.example.org/mynamespace2") 
    public Ele ele1; 

    @XmlElement(namespace="http://www.example.org/mynamespace2") 
    public Ele ele2; 
} 

public class Ele { 

    @XmlAttribute 
    public String attrib = "myattri"; 

    @XmlValue 
    public String value = "value"; 
} 

我寧願是Ele指定命名空間,所以,我不指定它在其他地方...

...這可能嗎?

+2

以下內容應該有所幫助:http://blog.bdoughan.com/2010/08/jaxb-namespaces.html – 2014-09-25 15:20:45

回答

1

這實際上是基於Blaise Doughan的評論中的鏈接。

包裝級的元數據

我們可以輕鬆晉級通過使用包 級別的註釋@XmlSchema的所有元素。要指定包級別註釋, 會在所需的包中創建一個名爲package-info的類(有關示例,請參閱下面的完整源代碼)。下面我們將設置默認的 名稱空間並指定默認情況下所有元素都是名稱空間 限定。

我可以一個package-info.java添加到example.ele包在它下面:

@XmlSchema( 
    namespace = "http://www.example.org/mynamespace2", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example.ele; 

,並在example.ele包放Ele