Как связать XML с бобом - PullRequest
       13

Как связать XML с бобом

3 голосов
/ 16 сентября 2010

В моем приложении я использую API через HTTP, и он возвращает ответы в виде XML.Я хочу автоматически привязывать данные из xml к bean-компонентам.

Например, привязывать следующий xml:

<xml>
   <userid>123456</userid>
   <uuid>123456</uuid>
</xml>

к этому бобу (возможно, с помощью аннотаций)

class APIResponce implement Serializable{

private Integer userid;
private Integer uuid;
....
}

Какой самый простой способ сделать это?

Ответы [ 4 ]

5 голосов
/ 16 сентября 2010

Я согласен с использованием JAXB. Поскольку JAXB является спецификацией, вы можете выбрать одну из нескольких реализаций:

Вот как вы можете сделать это с JAXB:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="xml")
@XmlAccessorType(XmlAccessType.FIELD)
public class APIResponce {

    private Integer userid; 
    private Integer uuid; 

}

При использовании со следующим демонстрационным классом:

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class Demo {

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

        File xml = new File("input.xml");
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        APIResponce api = (APIResponce) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(api, System.out);
    }
}

Будет выдавать следующий XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
    <userid>123456</userid>
    <uuid>123456</uuid>
</xml>
4 голосов
/ 16 сентября 2010

Попробуйте JAXB - http://jaxb.java.net/

Вступительная статья для него http://www.javaworld.com/javaworld/jw-06-2006/jw-0626-jaxb.html

1 голос
/ 17 сентября 2010

В прошлом я использовал XMLBeans для привязки XML к типам Java. Это действительно легко использовать. Сначала вы должны скомпилировать свою XML-схему в типы Java с помощью команды scomp (или плагина maven и т. Д.) И использовать типы в своем коде.

Пример кода в действии здесь .

1 голос
/ 16 сентября 2010

В качестве альтернативы Castor и JAXB, Apache также имеет проект для выполнения привязки XML к объекту:

Betwixt: http://commons.apache.org/betwixt/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...