我似乎无法找到制作Pojo的方法使用jackson-xml注释生成xml,如下所示:
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy">A String</Element2>
</Element1>
</Root>
Run Code Online (Sandbox Code Playgroud)
我似乎最接近的是:
根POJO:
public class Root {
@JacksonXmlProperty(localName = "Element1")
private Element1 element1;
public String getElement1() {
return element1;
}
public void setElement1(String element1) {
this.element1 = element1;
}
}
Run Code Online (Sandbox Code Playgroud)
Element1 POJO:
public class Element1 {
@JacksonXmlProperty(isAttribute = true)
private String ns = "xxx";
@JacksonXmlProperty(localName = "Element2")
private Element2 element2;
public String getElement2() {
return element2;
}
public void setElement2(String element2) {
this.element2 = element2;
}
}
Run Code Online (Sandbox Code Playgroud)
Element2 POJO:
public class Element2 {
@JacksonXmlProperty(isAttribute = true)
private String ns = "yyy";
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
但这会返回以下内容:
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy"><value>A String</value></Element2>
</Element1>
</Root>
Run Code Online (Sandbox Code Playgroud)
"A String"周围的元素标签我不想显示.
Ily*_*lya 37
您应该将JacksonXmlText注释用于value字段.
public class Element2
{
@JacksonXmlProperty(isAttribute = true)
private String ns = "yyy";
@JacksonXmlText
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后XML会是这样的
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy">A String</Element2>
</Element1>
</Root>
Run Code Online (Sandbox Code Playgroud)
小智 5
为了补充FlyingAssistant 的答案,您不能将 @JacksonXmlText 添加到构造函数属性。根据GitHub 存储库中报告的此问题,此功能可能会添加到构建 2.13 中。所以现在你必须这样做
data class Element2(@field:JacksonXmlProperty(isAttribute = true) val ns: String = "yyy") {
@field:JacksonXmlText
val value: String? = null
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24939 次 |
| 最近记录: |