2010-09-16 2 views
3

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

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

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

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

class APIResponce implement Serializable{ 

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

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

ответ

5

Я согласен с использованием 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> 
1

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

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

+1

Является ли Betwixt активным проектом? Дата в документации по последней версии 0.8 датирована декабрем 2006 года. –

+0

Я не верю, что она активна. Конечно, я бы не рекомендовал его для большого проекта, но для простого привязки объекта xml к java он отлично работает. Мы используем Castor для наших дополнительных потребностей в привязке, но обнаружили, что это было немного излишним для простых потребностей привязки. – skel625

+0

Для расширенного перепроверки MOXy - http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html –

1

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

Приведен пример кода в действии here.

+0

Из моего понимания XMLBeans имеет свои собственные собственные классы и не имеет отношения к POJO. Чтобы глебреутов использовал свой собственный компонент, ему нужно было бы скопировать из объектов XMLBeans в его класс. –

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

  • Нет связанных вопросов^_^