2009-10-16 6 views
3

Я ищу структуру XML-сериализации, которая имеет возможность конфигурации XML вместо аннотации, чтобы назвать классы и поля.Сериализация объектов Java для xml и back (конфигурация XML)

Я посмотрел на Simple и XStream, но я не нашел способ сделать это. Я полагаю, что я мог бы использовать Spring IOC и XStreams aliasing, но если есть какие-то рамки, которые могли бы сделать это для меня, было бы, конечно, лучше :)

ответ

3

JiBX - это структура привязки Java-XML, в которой вы можете использовать XML привязок. XML немного подробен и иногда может быть немного сложнее управлять, но это может быть справедливо для любой конфигурации XML. Я знаю, что вы сказали, что посмотрели на xstream, но некоторую конфигурацию xstream можно выполнить с помощью кода (не конфигурации, а путем настройки объекта xstream, например, опускания полей). Я не уверен, достаточно ли этого для вас, но вы можете делать некоторые вещи без аннотаций.

+0

+1 jibx - единственная современная структура маршаллинга, которую я знаю, которая имеет внешние представления привязки – skaffman

+0

На первый взгляд, я думаю, что это именно то, что мне нужно. – Trick

0

EclipseLink JAXB (MOXy) имеет вовне связывания файла на основе метаданных JAXB

Файл образец выглядит примерно так:

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> 
    <java-types> 
     <java-type name="org.example.order.PurchaseOrder"> 
      <java-attributes> 
       <xml-attribute java-attribute="id"/> 
       <xml-element java-attribute="customer"> 
        <xml-java-type-adapter value="org.example.order.CustomerAdapter"/> 
       </xml-element> 
       <xml-element java-attribute="lineItems" name="line-item"/> 
      </java-attributes> 
     </java-type> 
    </java-types> 
</xml-bindings> 

Для получения дополнительной информации см: - http://wiki.eclipse.org/EclipseLink/Examples/MOXy/EclipseLink-OXM.XML

0

Я люблю XStream потому, что он в основном Just Works TM.

Я не пробовал это сам или не думал об этом, но рассмотрел ли вы использование XStream как для фактических данных, так и для собственной конфигурации? Я думаю, вы могли бы использовать XStream для чтения конфигурационного файла, а затем использовать (простые String) данные, полученные из них, в качестве аргументов для вызова метода alias() до обработки данных.