java - 在 Java 中使用 JAXB 映射命名空间

标签 java xml serialization jaxb deserialization

目前,我正在通过使用以下注释为包创建 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/

相关文章:

java - 从方法返回 double 值

Java 接口(interface)和 Haskell 类型类 : differences and similarities?

Java:尝试使用错误类型作为映射键时出现编译器或 Eclipse 警告

C#反序列化元素映射

xml - 将 XML 转换为 Json 并从转换后的 Json 中删除 XML 声明

python - Django Rest框架序列化器: required_fields

java - 如何序列化注入(inject)的bean?

java - 从 Sql Server 表创建 pojo 类时,Hibernate 将 'NVARCHAR' 转换为 'Serializable'

java - 如何删除所有 Activity 工具栏下的标高

java - 如何在android studio中将布局从约束更改为相对?