java - jackson Xml : How to add namespace only on root?

标签 java jackson jackson-dataformat-xml

如果我在根元素上声明命名空间,如下所示:

@JacksonXmlRootElement(namespace = "urn:stackify:jacksonxml", localName = "PersonData")
public class Person {
    private String id;
    private String name;
    private String note;
}

它产生:

<PersonData xmlns="urn:stackify:jacksonxml">
    <id xmlns="">12345</id>
    <name xmlns="">Graham</name>
    <note xmlns="">Hello</note>
</PersonData>

但我只想在根元素上使用命名空间。 xmlns 属性不应出现在子元素上。

我该如何存档?

最佳答案

我发现有一个更优雅的解决方法。

你可以像这样为你的命名空间定义常量:

@JacksonXmlRootElement(localName = "PersonData")
public class Person {

    @JacksonXmlProperty(isAttribute = true)
    private final String xmlns = "urn:stackify:jacksonxml";

    private String id;
    private String name;
    private String note;
}

关于java - jackson Xml : How to add namespace only on root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947347/

相关文章:

java - JsArray<?> 的大小为 1 但得到 "java.lang.IndexOutOfBoundsException: Index: 0, Size: 0"

java - 在 JDK7 中找到日期之间的真正差异

java - 将带有特殊字符的 JSON 反序列化为字符串

java - Spring Boot XML 更改根元素名称

java - 表 'USER' 上的 DELETE 导致外键违规

java - 插入键时自定义等于/哈希( Guava 缓存)

java - Jackson2 Java转Json数组创建数组时忽略字段名称

java - 将嵌套 json 解析为原始字符串

java - Jackson XML - 是否有可用于反序列化包含数组的对象的 Java 内置类型?

java - 使用 Jackson 的 PropertyFilter 动态阻止某些字段被序列化