Я новичок в Stax и XStream. Я пытаюсь демаршалировать некоторые общие элементы из огромного XML-потока (может потребоваться от 1,5 до 2,5 миллионов элементов)
Я попытался Stax проанализировать поток, чтобы добраться до интересующего элемента, а затем вызвать xStream для отмены маршалинга XML до EndElement.
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(fis);
while (reader.hasNext()) {
if (reader.isStartElement() && reader.getLocalName().toLowerCase().equals("person")) {
break;
}
reader.next();
}
StaxDriver sd = new StaxDriver();
AbstractPullReader rd = sd.createStaxReader(reader);
XStream xstream = new XStream(sd);
xstream.registerConverter(new PersonConverter());
Person p = (Person) xstream.unmarshal(rd);
Создаю тестовый ввод <Persons>
<Person>
<name>A</name>
</Person>
<Person>
<name>B</name>
</Person>
<Person>
<name>C</name>
</Person>
</Persons>
Проблема в том, что первый мой конвертер не вызывается. Во-вторых, я получаю CannotResolveClassException для элемента «name» в Person, а XStream не создает мой объект Person. Что я пропустил в своем коде?
XMLStreamReader
. Я не знаю, какLook Ahead
использоватьXMLStreamReader
. Вы нашли на это ответ? Если да, то просьба дать свой ответ. Я также разместил здесь свой вопрос: stackoverflow.com/questions/67667516/ - person BATMAN_2008   schedule 25.05.2021