通过javax.xml.bind进行XML序列化

时间:2014-09-25 15:19:01

标签: java xml jaxb

我正在使用javax.xml.bind.*(我相信你称之为JAXB)将一些相当复杂的类序列化为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指定命名空间,以便我不必在其他地方指定它...

......这可能吗?

1 个答案:

答案 0 :(得分:1)

这实际上是基于Blaise Doughan评论中的链接。

  

包级别元数据

     

我们可以通过使用包轻松地限定所有元素   级别注释@XmlSchema。要指定包级别注释,   在所需的包中创建一个名为package-info的类(请参阅   完整的源代码如下)。下面我们将设置默认值   命名空间并指定默认情况下所有元素都是命名空间   合格。

我可以在package-info.java包中添加example.ele,其中包含以下内容:

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

并将Ele放入example.ele包。