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