2015-01-13 5 views
1

Моя попытка конвертировать XML в Java с использованием JAXB не работает должным образом. Вокруг него есть несколько других подобных вопросов, но ни один из предложенных решений, которые я искал, не помогает мне.XML to Java JaxB

Ниже мой боб

@XmlRootElement(name = "ListingResponse", namespace = "http://www.random.com") 
@XmlType(propOrder = {"success", "listingId", "description"}) 
public class ListingResponse { 
    private String success; 
    private String listingId; 
    private String description; 


    public String getSuccess() { 
     return success; 
    } 

    @XmlElement(name = "Success") 
    public void setSuccess(String success) { 
     this.success = success; 
    } 

    public String getListingId() { 
     return listingId; 
    } 

    @XmlElement(name = "ListingId") 
    public void setListingId(String listingId) { 
     this.listingId = listingId; 
    } 

    public String getDescription() { 
     return description; 
    } 

    @XmlElement(name = "Description") 
    public void setDescription(String description) { 
     this.description = description; 
    } 

Ниже моя попытка сделать то демаршалинга

ListingResponse response = null; 
try { 
    JAXBContext jaxbContext = JAXBContext.newInstance(ListingResponse.class); 
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
    response = (ListingResponse) jaxbUnmarshaller.unmarshal(new File("response.xml")); 

} catch (JAXBException e) { 
    e.printStackTrace(); 
} 

И, наконец, мое содержание response.xml

<ListingResponse xmlns="http://www.random.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Success>true</Success> 
    <Description>ListingId 123 created.</Description> 
    <ListingId>123</ListingId> 
</ListingResponse> 
  1. Там не исключение будучи брошенным.
  2. 'response' не имеет значения.
  3. Я попытался добавить @XmlAccessorType(XmlAccessType.FIELD/PROPERTY) с аннотацией @XMLEelement на поля/методы набора, но это тоже не помогло.

Однако ответ всегда «пуст», ни одно из инициализированных полей.

Можете ли вы, ребята, найти здесь проблему?

ответ

0

В настоящее время вы указали только правильную квалификацию пространства имен для корневого элемента. Вам необходимо использовать аннотацию пакета @XmlSchema для сопоставления квалификации пространства имен для вашей модели.

package-info.java

@XmlSchema( 
    namespace = "http://www.random.com", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example; 

import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

Для получения более подробной информации

+0

Спасибо. Должен признаться, эта информация уже была в вашем блоге, за исключением того, что я даже не знал, как создать package-info.java до этого !!! – Andy