【发布时间】:2018-05-23 18:35:02
【问题描述】:
我正在尝试使用特定的标签/对象层次结构反序列化 XML 有效负载(SOAP 消息的主体,但仅此而已)。尝试将展开的对象聚合到 List 中时,会引发 MismatchedInputException。
示例负载
<libraryRequest>
<libraryProfile>
<libraryId>
<libraryName>
<newBookInfo>
<bookId>...</bookId>
<bookTitle>...</bookTitle>
<datePublished>...</datePublished>
</newBookInfo>
<currentBooks>
<bookId>...</bookId>
<bookTitle>...<bookTitle>
<datePublished>...</datePublished>
</currentBooks>
<currentBooks>
<bookId>...</bookId>
<bookTitle>...<bookTitle>
<datePublished>...</datePublished>
</currentBooks>
<currentBooks>...</currentBooks>
</libraryProfile>
</libraryRequest>
Java 对象是
public class LibraryRequest {
private LibraryProfile libraryProfile;
@XmlElement(name = "libraryProfile")
public LibraryProfile getLibraryProfile(){
...
}
// setters
public class LibraryProfile {
// constructors, getters & setters for primitive types
private List<BookInfo> bookInfos;
public List<BookInfo> getBookInfo(){
return this.BookInfos;
}
// rest of the functions
我的问题是我不知道有多少 currentBooks 标签会出现在 XML 有效负载中,而且它们不会出现在包装元素中。我需要跟踪每个 currentBook 元素,这就是我使用 Collection 的原因,但我无法使用 currentBooks 标签中包含的信息正确填充集合。
我是否可以使用 JAXB 将 XML 序列分组到 Java 集合/列表中,如果不能,我是否可以使用 Jackson 的 XML 功能将未包装的 XML 标记分组到 Java 集合中?
主要目标是使用让 XML 请求进入 Spring 控制器并将 XML 序列正确反序列化为 Java 列表/集合。任何建议都会有所帮助。
我使用的是 Spring Boot 1.5.8(后来的版本给我带来了不同的麻烦)和 Jackson 版本 2.9.5
【问题讨论】:
标签: java xml spring spring-mvc jackson2