我正在尝试反序列化以下 XML。
<RESPONSE>
<FIELDS>
<FIELD KEY="MSG_VERSION">003</FIELD>
<FIELD KEY="CUSTOMER_NBR">001</FIELD>
...
<FIELD KEY="ORIGINAL_TYPE">RM1</FIELD>
</FIELDS>
</RESPONSE>
我需要从KEY
属性和值中捕获值。以下是我创建的 Java 类。
package io.app.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JacksonXmlRootElement(localName = "RESPONSE")
public class ResponseData {
@JacksonXmlElementWrapper(localName = "FIELDS")
@JacksonXmlProperty(localName = "FIELD")
private List<Field> fields = new ArrayList<>();
@Data
public static class Field {
@JacksonXmlProperty(isAttribute = true)
private String key;
@JacksonXmlText(value = true)
private String content;
}
}
已XmlMapper
按如下方式初始化。
private final XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
问题是,尽管content
正确设置,但key
值始终为null
。我在这里做错了什么?