как преобразовать xml в java-объект?

У меня есть XML, который используется для настройки некоторых правил, он не имеет сложной структуры, но эта конфигурация используется везде в моей системе, поэтому я хочу разобрать этот XML на java-объекты и спроектировать как режим синглтона, есть ли хороший способ использовать его для разбора XML на Java-объекты напрямую без написания большого количества кода?

Я сделал некоторые исследования на Google и известно JAXB является выбором, мое приложение просто некоторые виды инструментальной программы, которые читают правило, а затем следовать делать вещи, JAXB может быть использован для веб-сервиса более широко, это подходит для моих проектов?

Если да, то самый важный вопрос, я использовал xjc для генерации класса источника java объекта в соответствии с xsd файл, после unmarshal я буду непосредственно получить эти configurationType объекта, необходимо ли мне преобразовать снова, (из JaxB классов в мою собственную конфигурацию java pojo объекта), я вижу большинство кодеров сделал это, но почему? потому что они являются некоторые данные, просто из объекта генерируется в JAXB и скопировать в наш собственный созданный POJO объект

JAXB - идеальное решение. Но для этого не обязательно нужны xsd и xjc. Чаще всего у вас нет xsd, но вы знаете, что такое ваш xml. Просто проанализируйте ваш xml, например,


    29
    mkyong

Создайте необходимый класс(ы) модели:

@XmlRootElement
public class Customer {

    String name;
    int age;
    int id;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    @XmlAttribute
    public void setId(int id) {
        this.id = id;
    }

}

Попытайтесь размонтировать:

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C:\\file.xml"));

Проверьте результаты, исправьте ошибки!

Комментарии (6)

Для выполнения Unmarshall с помощью JAXB:

  1. Преобразуйте данный XML в XSD (самостоятельно или с помощью онлайн-конвертера),

  2. Создайте проект JAXB в eclipse,

  3. Создайте XSD файл и вставьте в него содержимое преобразованного XSD,

  4. Щелкните правой кнопкой мыши на **XSD файле--> Generate--> JAXB Classes--> следуйте инструкциям (это создаст все необходимые .java файлы в src, т.е. один package-info, фабрику объектов и pojo класс),

  5. Создайте еще один .java-файл в src для выполнения операции unmarshall и запустите его.

Счастливого кодинга !!!

Комментарии (0)

JAXB - это надежный выбор, поскольку он обеспечивает гладкое отображение xml на классы java. Но есть и другие фреймворки, вот один из них:

https://code.google.com/p/xmappr/

Комментарии (1)