Я называю XML-документ трехслойным , если его структура имеет следующую структуру: корневой элемент содержит несколько элементов контейнера (я буду называть их сущностями ), каждый из которых внутри них есть несколько элементов simpleType (я назову их properties ).
Примерно так:
<data>
<spaceship>
<number>1024</number>
<name>KTHX</name>
</spaceship>
<spaceship>
<number>1624</number>
<name>LEXX</name>
</spaceship>
<knife>
<length>10</length>
</knife>
</data>
, где spaceship
- это сущность, а number
- это свойство.
Моя проблема изложена ниже:
С учетом
schema
: произвольный xsd-файл, описывающий трехслойный документ, загруженный во время выполнения.
xmlDocument
: XML-документ, соответствующий schema
.
Создать
A Map<String, Map <String, Object>>
, содержащий данные из xmlDocument
, где первый ключ соответствует сущности, второй ключ соответствует свойству этой сущности, а значение соответствует значению этого свойства после приведения его к надлежащему типу Java (например, , если схема устанавливает значение свойства равным xs:int
, тогда оно должно быть приведено к Integer
).
Как проще всего добиться этого результата с существующими библиотеками?
P. С.
JAXB на самом деле не вариант здесь. Схема может быть произвольной и неизвестной во время компиляции. Также я хочу избежать чрезмерного использования отражения (связанного с преобразованием бинов в карты). Я ищу что-то, что позволило бы мне делать типы, пока выполняется анализ xml.