2009-09-11 2 views
1

Предположим, у меня есть класс Foo с некоторыми примитивными переменными экземпляра. Я инициализирую их со свойствами в файлах XML. Теперь каждый Foo также имеет Bar как переменную, которая, в свою очередь, имеет свои собственные свойства. Поскольку они привязаны к охватывающему объекту, имеет смысл держать их в одном файле. Как мне отформатировать XML так, чтобы он мог инициализировать объект?XML-иерархия с свойствами Java

ответ

2

Посмотрите на XStream, что позволяет тривиально сериализовать/десериализировать иерархию объектов Java в/из XML.

В своем простейшем случае он будет работать с POJO, который не требует дополнительной работы (никаких интерфейсов/базовых классов и т. Д.). Но вы можете настроить, как сериализовать и десериализовать переименование элементов и т. Д., Чтобы они соответствовали существующей структуре XML.

+0

До сих пор мне нравится идея XStream, глядя на их примерах. Тем не менее, у меня возникло страшное исключение «контент, не разрешенный в прологе». –

+0

Обновление: мне удалось заставить его работать (я был настолько глуп, чтобы читать из String, а не FileInputStream), не говоря уже о том, что мои XML-файлы выглядят намного красивее. Я доволен этим решением. –

5

Использование Spring. Он специально разработан, чтобы разрешить инициализацию этого типа, включая обработку ссылок между объектами.

0

JAXB стоит посмотреть:

public class JaxbDemo { 

    @XmlRootElement 
    public static class Foo { 
    @XmlElement public Bar bar; 
    } 

    public static class Bar { 
    @XmlAttribute public int baz; 
    } 

    public static void main(String[] args) { 
    String xml = "<foo><bar baz='123'/></foo>"; 
    Foo foo = JAXB.unmarshal(new StringReader(xml), Foo.class); 
    System.out.println(foo.bar.baz); 
    } 
} 

(Открытые члены используются для демонстрационных целей.)

Смежные вопросы