Как связать XML с бобом
В моем приложении я использую API через HTTP, и он возвращает ответы в виде XML. Я хочу автоматически связывать данные из XML для бобов.
Например, связать следующий XML:
<xml>
<userid>123456</userid>
<uuid>123456</uuid>
</xml>
к этому бобу (возможно, с помощью аннотаций)
class APIResponce implement Serializable{
private Integer userid;
private Integer uuid;
....
}
Какой самый простой способ сделать это?
4 ответа
Я согласен с использованием JAXB. Поскольку JAXB является спецификацией, вы можете выбрать одну из нескольких реализаций:
- Метро (включено в Java SE 6)
- MOXY JAXB (я технический руководитель)
- JaxMe
Вот как вы можете сделать это с 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>
Попробуйте JAXB - http://jaxb.java.net/
Вступительная статья для этого http://www.javaworld.com/javaworld/jw-06-2006/jw-0626-jaxb.html
В качестве альтернативы Castor и JAXB, у Apache также есть проект для привязки XML к объектам:
Betwixt: http://commons.apache.org/betwixt/
В прошлом я использовал XMLBeans для привязки XML к типам Java. Это действительно легко использовать. Сначала вы должны скомпилировать свою XML-схему в типы Java, используя scomp
команда (или плагин Maven и т. д.) и использовать типы в вашем коде.
Здесь приведен пример кода в действии.