目前,我正在通过使用以下注释为包创建 package-info.java 文件来映射 namespace 。
@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED,
namespace = "http://example.com",
xmlns = {
@XmlNs(prefix = "i",
namespaceURI = "http://www.w3.org/2001/XMLSchema-instance")
})
正如您所看到的,我的一个命名空间没有前缀,而另一个则没有前缀,这目前有效,但我想要另一种映射命名空间的方法,而无需创建单独的文件,任何人都知道如何放置命名空间在我的类中与注释一起映射?
在我的 XML 中, namespace 声明位于我的根元素内,如下所示:
<RootElement xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.com">...
我的类声明和注释类似于下面的根元素。
@XmlRootElement(name="RootElement)
public static class RootElement{
........
}
谢谢。
最佳答案
希望以下内容对您有所帮助:
使用@XmlSchema
包信息
@XmlSchema(
elementFormDefault = XmlNsForm.QUALIFIED,
namespace = "http://example.com")
package forum20127191;
import javax.xml.bind.annotation.*;
根元素
package forum20127191;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="RootElement")
public class RootElement {
private String foo;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
没有@XmlSchema
如果您不希望在包级别 @XmlSchema
注释上指定命名空间限定,那么您将需要对每个到元素的映射进行命名空间限定。您的 RootElement
类需要更改为如下所示。
package forum20127191;
import javax.xml.bind.annotation.*;
@XmlRootElement(name="RootElement", namespace="http://example.com")
public class RootElement {
private String foo;
@XmlElement(namespace="http://example.com")
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
了解更多信息
关于java - 在 Java 中使用 JAXB 映射命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20127191/