Thi*_*yão 6 java jackson jackson-dataformat-xml
如果我在根元素上声明命名空间,如下所示:
@JacksonXmlRootElement(namespace = "urn:stackify:jacksonxml", localName = "PersonData")
public class Person {
private String id;
private String name;
private String note;
}
Run Code Online (Sandbox Code Playgroud)
它产生:
<PersonData xmlns="urn:stackify:jacksonxml">
<id xmlns="">12345</id>
<name xmlns="">Graham</name>
<note xmlns="">Hello</note>
</PersonData>
Run Code Online (Sandbox Code Playgroud)
但我只想要根元素上的命名空间。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;
}
Run Code Online (Sandbox Code Playgroud)
您需要在每个属性中指定与根元素相同的命名空间:
@JacksonXmlRootElement(namespace = "urn:stackify:jacksonxml", localName = "PersonData")
public class Person {
@JacksonXmlProperty(namespace = "urn:stackify:jacksonxml")
private String id;
@JacksonXmlProperty(namespace = "urn:stackify:jacksonxml")
private String name;
@JacksonXmlProperty(namespace = "urn:stackify:jacksonxml")
private String note;
}
Run Code Online (Sandbox Code Playgroud)
它有点烦人,但这是我发现避免不必要的命名空间的唯一方法。
| 归档时间: |
|
| 查看次数: |
4869 次 |
| 最近记录: |