Вопрос

Я пытаюсь сопоставить 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top