У меня есть XML-файл, как следующийJAXB маршализация одного примитивного элемента
<tag1>
<intag1>
<item>
<aaa>sdfdfsf</aaa>
<bbb>fvdfv</bbb>
</item>
</intag1>
<intag2>3</intag2>
</tag1>
Я использую пружинный пакет с JAXB для чтения XML и карты на объекты. У меня есть объектная модель для intag1
, и она отображается без каких-либо проблем, но я хочу нанести intag2
на объект int
напрямую. Вот пример кода, который я тестировал, но это дает мне следующее исключение. может ли кто-нибудь указать на проблему?
Jaxb2Marshaller jaxb2unmarshaller = new Jaxb2Marshaller();
jaxb2unmarshaller.setClassesToBeBound(int.class);
jaxb2unmarshaller.afterPropertiesSet();
StaxEventItemReader reader = new StaxEventItemReader();
reader.setResource(new InputStreamResource(new FileInputStream("test6.xml")));
reader.setUnmarshaller(jaxb2unmarshaller);
reader.setFragmentRootElementName("intag2");
reader.afterPropertiesSet();
reader.open(new ExecutionContext());
исключение:
[com.sun.istack.internal.SAXParseException2; lineNumber: 105; columnNumber: 25; unexpected element (uri:"", local:"intag2"). Expected elements are (none)]
У меня уже есть классы моделей для отображения 'intag1', а' intag1' можно повторять в 1000 раз, поэтому я использую потоковое вещание. Я не хочу сопоставлять элемент корневого уровня 'tag1' с объектом java, потому что это займет гораздо больше памяти. – Sudheera
@Sudheera Я обновил свой ответ, чтобы он соответствовал вашим потребностям – Thrax
Hi @Thrax Спасибо, я только что опубликовал другой ответ, просто сделайте быстрый взгляд. – Sudheera