используя Hibernate и dom4j, возможно ли преобразовать POJO в его представление XML (и наоборот) без БД? - PullRequest
1 голос
/ 03 августа 2011

Можно ли преобразовать экземпляр POJO в его представление XML, не сохраняя его в БД, и снова загрузить его в режиме DOM4J (и из XML в POJO)?

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Я еще не использовал это, но DOM4J, кажется, имеет некоторую интеграцию JAXB, которую можно использовать для преобразования ваших POJO в XML (DOM4J):

ОБНОВЛЕНИЕ

DOM4J также предлагает класс DocumentResult, который реализует javax.xml.transform.Result.Вы можете использовать JAXB для маршалинга этого класса, а затем манипулировать результирующим объектом DOM4J Document:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

import org.dom4j.Document;
import org.dom4j.io.DocumentResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Create the JAXBContext
        JAXBContext jc = JAXBContext.newInstance(Customer.class);

        // Create the POJO
        Customer customer = new Customer();
        customer.setName("Jane Doe");

        // Marshal the POJO to a DOM4J DocumentResult
        Marshaller marshaller = jc.createMarshaller();
        DocumentResult dr = new DocumentResult();
        marshaller.marshal(customer, dr);

        // Manipulate the resulting DOM4J Document object
        Document document = dr.getDocument();
        document.getRootElement().addAttribute("foo", "bar");

        // Output the result
        System.out.println(document.asXML());
    }

}
1 голос
/ 03 августа 2011

Вам не нужно ничего, кроме JAXB (пакет javax.xml.bind), который является частью JDK (я думаю, начиная с JDK6). Изучите аннотацию JAXBContext и @XmlRootElement для начала

0 голосов
/ 03 августа 2011

Существует множество библиотек XML-сериализации, на ваш выбор:

Я большой поклонник XStream, он очень прост в использовании и не требует .xsd.

...