如何使用JacksonXmlRootElement获取嵌套元素?

v440hwme  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(135)

我正在使用Java/Spring
我有这样的XML:

<Transfer> 
 <Data>
     ... 
 </Data>
 <Transfer>

我只需要访问模型的XML元素“Data,”例如:@JacksonXmlRootElement (localName = "Data")
没有额外的 Package 类是否可行?

svujldwt

svujldwt1#

没有额外的 Package 类是否可行?
是的,如果您读取感兴趣的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();
mo49yndu

mo49yndu2#

友情提醒大家:请不要混淆JAXB和JacksonXML。我的所有问题都来自于它们。
只需添加一个额外的模型,如下面的代码所示:

@Data
@JacksonXmlRootElement(localName = "Transfer")
public class WrapperClass{

   @JacksonXmlProperty(localName="Data")
   public MyClass myClas;

}

相关问题