通过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
包中。以下内容应该会有所帮助: