Я хожу по кругу здесь и ищу некоторую помощь в получении этого для создания списка.
Это мой xml
<rs:data>
<z:row iWebDiskID='2224' vchDiskID='NSS001' iQuizID='53647'/>
<z:row iWebDiskID='2224' vchDiskID='NSS001' iQuizID='86097'/>
<z:row iWebDiskID='2224' vchDiskID='NSS001' iQuizID='86100'/>
....
</rs:data>
Это мой класс строки
@JacksonXmlRootElement(namespace = "z", localName = "row")
public class RPDiskItem{
@JacksonXmlText
public Integer iWebDiskID;
@JacksonXmlText
public String vchDiskID;
@JacksonXmlText
public Integer iQuizID;
}
Это мой класс данных
@JacksonXmlRootElement(namespace = "rs", localName = "data")
public class Data
{
@JacksonXmlElementWrapper(namespace = "rs", localName = "data")
@JacksonXmlProperty(namespace = "z", localName = "row")
@JsonProperty("z:row")
public List<RPDiskItem> data;
public List<RPDiskItem> getData() {
return data;
}
public void setData(List<RPDiskItem> data) {
this.data = data;
}
}
И я передаю его так:
public class XmlParser{
public static void main(String[] args) throws Exception{
XMLInputFactory f = new WstxInputFactory();
f.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);
ObjectMapper mapper = new ObjectMapper(new XmlFactory(f, new WstxOutputFactory()));
RPDiskItem di = mapper.readValue(Strings.simple, RPDiskItem.class);
Data d = mapper.readValue(Strings.listItems, Data.class);
}
}
Где Strings.simple
это просто первая строка в xml и Strings.listItems
- это полные xml, как указано выше.
Анализ одного RPDiskItem работает без проблем, но попытка получить список из них, похоже, не работает. Я либо получаю это исключение ниже, либо в виде пустого списка.
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "z:row" (class pojo.Data), not marked as ignorable (one known property: "data"])
at [Source: (StringReader); line: 2, column: 70] (through reference chain: pojo.Data["z:row"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:843)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1206)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1592)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1570)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4218)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3214)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3182)
at XmlParser.main(XmlParser.java:26)
Я уверен, что просто упускаю что-то простое, но я не могу найти какие-либо примеры подобной ситуации