Вставная замена для java.beans.XMLEncoder

У меня есть много XSL-преобразований, которые полагаются на java.beans.XMLEncoder Формат XML, и мне интересно, смогу ли я найти заменяющую библиотеку с более высокой производительностью. Я смотрел на XStream, но его формат сериализации отличается.

Я ищу заменить его, так как я работаю с устаревшей кодовой базой, которая имеет раздвоенную версию XMLEncoder и я хотел бы вернуть его к чему-то более стандартному, но java.beans.XMLEncoder имеет гораздо худшую производительность.

Для класса Person (с соответствующими геттерами и сеттерами):

public class Person {
    private String name;
    private List<String> favoriteColors;
    private Date birthDate;
    private int age;
}

XMLEncoder производит XML, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_66" class="java.beans.XMLDecoder">
 <object class="Person" id="Person0">
  <void property="age">
   <int>40</int>
  </void>
  <void property="birthDate">
   <object class="java.util.Date">
    <long>175064400000</long>
   </object>
  </void>
  <void property="favoriteColors">
   <void method="add">
    <string>red</string>
   </void>
   <void method="add">
    <string>green</string>
   </void>
  </void>
  <void property="name">
   <string>John Doe</string>
  </void>
 </object>
</java>

Я предполагаю, что можно было бы создать группу XStream Converters, чтобы приблизить формат, но мне интересно, есть ли более простое решение, прежде чем я направлюсь вниз по этой кроличьей норе.

1 ответ

Решение

В случае, если кто-то еще столкнется с этим позже, реализация через XStream доставит вас туда, если вы не заботитесь о порядке элементов. Возможно, вы могли бы сделать более глубокую реализацию, которая позволит вам контролировать порядок элементов, но я закончил тем, что отказался от этой идеи, и я просто собираюсь разобраться с ней, пока не смогу переписать соответствующий код.

Другие вопросы по тегам