通过javax.XML.bind实现XML序列化

通过javax.XML.bind实现XML序列化,java,xml,jaxb,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 e

我正在使用
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
指定名称空间,这样我就不必在其他地方指定它了


…这可能吗?

这实际上是基于布莱斯·道格汉评论中的链接

包级元数据

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

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

@XmlSchema( 
    namespace = "http://www.example.org/mynamespace2", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example.ele;
并将
Ele
放入
示例.Ele
包中。

以下内容应该会有所帮助: