当我使用注释时:
@XmlRootElement(name="RootElement", namespace="namespace")
class RootElement {
从java创建xml文件,它将根元素创建为:
<ns2:RootElement xmlns:ns2="namespace">
但我想创建没有“ns2”,如:
<RootElement xmlns="namespace">
知道怎么解决吗?
Reletad链接(我用来创建xml的示例): http://www.java2s.com/Code/JavaAPI/javax.xml.bind.annotation/XmlRootElementname.htm
答案 0 :(得分:2)
JAXB在您的情况下不使用xmlns = "namespace"
,因为xmlns = "namespace"
还为子元素指定了命名空间,那么您的first
和last
元素都在默认命名空间中(因为@XmlRootElement
未指定子元素的命名空间。因此,您需要使用first
为last
和@XmlElement
设置名称空间:
@XmlElement(namespace = "namespace")
public String getFirst() {
return first;
}
...
@XmlElement(namespace = "namespace")
public String getLast() {
return last;
}
您还可以通过在package-info.java
中使用包级注释来避免为每个元素编写命名空间:
@javax.xml.bind.annotation.XmlSchema(
namespace = "namespace",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package foo;