我正在使用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
指定命名空间,以便我不必在其他地方指定它...
......这可能吗?
答案 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
包。