ArrayList для повторения XML с использованием betwixt

#java #xml #betwixt

#java #xml #betwixt

Вопрос:

Я использую Betwixt для вывода XML из класса Java, используя файлы .betwixt для настройки сопоставления.

Мне необходимо вывести некоторый XML, подобный этому (я должен соответствовать стороннему DTD:

 <data>
   <Status>Active</Status>
   <StatusCount>3</StatusCount>
   <Status>InActive</Status>
   <StatusCount>5</StatusCount>
   <Status>Banned</Status>
   <StatusCount>1</StatusCount>
</data>
  

В моем классе есть метод, который возвращает список объектов StatusCount

 List<StatusCount> getStatusCounts() {
  

Мой объект StatusCount имеет:

 String getStatusName() { ... }
String getStatusCount() { ... }
  

Я не могу обработать конфигурацию betwixt, чтобы получить желаемый результат. Я получаю дополнительный элемент, обертывающий каждую пару узлов Status / StatusCount, которые мне не нужны.

Возможно ли не иметь этого элемента? Спасибо за любую помощь!

Ответ №1:

Я не думаю, что возможен такой конкретный формат, т. Е. Вы не можете гарантировать, что Status и StatusCount будут появляться один за другим.

Однако вы можете создать класс, который связывает представление XML и ваш StatusCount объект, где у него есть два списка String подобных:

 public class StatusCountProxy {
    private List<String> statusName = new ArrayList<String>();
    private List<String> statusCount = new ArrayList<String>();
}
  

Из этих строк вы можете создавать свои пары. Это должно позволить десериализовать данный XML с помощью betwixt. Для сериализации в том же формате вам нужно немного взломать, где вы должны создать Status объект и StatusCount object, а затем записать их парами.