【发布时间】:2022-07-15 17:14:06
【问题描述】:
我正在使用 Java/Spring
我有这样的 XML:
<Transfer>
<Data>
...
</Data>
<Transfer>
我只需要访问我的模型的 XML 元素“数据”,例如:
@JacksonXmlRootElement (localName = "Data")
是否可以不用额外的包装类?
【问题讨论】:
标签: java xml spring api jackson
我正在使用 Java/Spring
我有这样的 XML:
<Transfer>
<Data>
...
</Data>
<Transfer>
我只需要访问我的模型的 XML 元素“数据”,例如:
@JacksonXmlRootElement (localName = "Data")
是否可以不用额外的包装类?
【问题讨论】:
标签: java xml spring api jackson
是否可以不用额外的包装类?
是的,如果您阅读您感兴趣的 xml 标签,XMLStreamReader 类直接指向相关标签,请注意您必须手动将 XMLStreamReader 阅读器放置到正确的标签:
//the simplest class, the classname is the same of the <Data> tag so no need for
//@JacksonXmlRootElement (localName = "Data")
public class Data {}
XMLInputFactory f = XMLInputFactory.newFactory();
XMLStreamReader sr = f.createXMLStreamReader(new FileInputStream(xml));
XmlMapper mapper = new XmlMapper();
sr.nextTag();
sr.nextTag(); //<-- pointing the <Data> tag
Data data = mapper.readValue(sr, Data.class);
sr.close();
【讨论】:
友情提醒大家:不要把JAXB和JacksonXML混为一谈,我所有的问题都是从那里来的。
所以,只需添加一个额外的模型,如下面的代码:
@Data
@JacksonXmlRootElement(localName = "Transfer")
public class WrapperClass{
@JacksonXmlProperty(localName="Data")
public MyClass myClas;
}
【讨论】: