我有以下xml:
<prog>
<prop1 attr="attr"> </prop1>
<prop2>some</prop2>
</prog>
我有以下课程来代表它:
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "prog")
public class Prog {
@JacksonXmlProperty(localName = "prop1")
private String prop1;
@JacksonXmlProperty(localName = "prop2")
private String prop2;
//getters, setters
}
但是它失败,并显示以下错误: Could not read document: Can not instantiate value of type [simple type, class com.xxx.xxx.entities.ro.Prog] from String value ('some'); no single-String constructor/factory method\n at [Source: java.io.PushbackInputStream@1bbaaffd; line: 18, column: 36]
可以很好地解析以下xml(使用上面的类):
没有属性
<prog>
<prop1> </prop1>
<prop2>some</prop2>
</prog>
空的prop1(而不是空格)
<prog>
<prop1 attr="attr"></prop1>
<prop2>some</prop2>
</prog>
不为空prop1
<prog>
<prop1 attr="attr"> g</prop1>
<prop2>some</prop2>
</prog>
原始xml有效吗?我该如何解析呢?
实际上,我需要跳过attr
,但是我也尝试将其表示为Object:
@JsonIgnoreProperties(ignoreUnknown = true)
public class XmlElement {
@JacksonXmlText
private String value;
//getters, setters
}
更新:我在使用SpringMVC控制器时调用解析,但是它也复制为:
String xml = "<prog>" +
"<prop1 attr=\"att1\"> </prop1>" +
"<prop2>some</prop2>" +
"</prog>";
ObjectMapper xmlmapper = new XmlMapper();
Prog prog = xmlmapper.readValue(xml, Prog.class);
它与com.fasterxml.jackson
version完美配合2.7.4
。但是,如果某些库具有其他版本(例如,jackson-dataformat-xml
较早版本),则会失败并显示各种错误。所以,你必须检查哪些版本com.fasterxml.jackson.core
,jackson-annotations
以及jackson-dataformat-xml
使用,让他们一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句