Сопоставление коллекции с XML в Castor
-
19-09-2019 - |
Вопрос
Я пытаюсь сопоставить POJO с XML с помощью Castor.
Допустим, у меня есть заказ, содержащий коллекцию предметов...Есть ли способ получить XML, подобный следующему:
<order>
...order attributes
<items>
<item> ..item attributes </item>
<item> ..other item </item>
</items>
</order>
Я мог бы сделать что-то подобное, но без <items>
узел.В другом случае это не было бы проблемой, но мой XML должен соответствовать строгой схеме XSD, поэтому мне нужно сделать это именно так.
Спасибо!
Я подумал о своего рода «обходном пути», который включал бы создание нового Java-объекта (это будет узел), который будет содержать только список элементов...может ли кто-нибудь подумать о лучшем подходе?с этого момента открыта награда за 100 повторений!
Решение
Вы можете использовать атрибут местоположения элементаbind-xml.
http://castor.codehaus.org/1.2/xml-mapping.html#6.-Location-attribute
Пример из документации:
<class name="Foo">
<field name="bar" type="Bar">
<bind-xml name="bar" location="abc"/>
</field>
</class>
Создает следующий XML:
<foo>;
<abc>
<bar>...</bar>
</abc>
</foo>
Другие советы
В другом ответе не используется атрибут коллекции, который, я думаю, вероятно, именно то, что вам в конечном итоге нужно.
Что-то вроде этого может работать при включении в сопоставление объекта Order:
<field name="items" type="item" collection="arraylist" >
<bind-xml name="items" node="element"/>
</field>