2015-04-21 2 views
-1

У меня возникли некоторые проблемы при преобразовании объекта String, в JAXBElement строки объекта, где мне нужно, чтобы установить это одинПреобразовать строку JAXBElement с помощью Java

Это целевой метод, где мне нужно, чтобы установить значение

public void setData(JAXBElement<String> value) { 
    this.data = ((JAXBElement<String>) value); 
} 

Для этого, я написал код что-то вроде этого

ObjectFactory factory = new ObjectFactory(); 
    JAXBElement<ApplicationIngestionRequest> jaxbElement = new JAXBElement(
      new QName(ApplicationIngestionRequest.class.getSimpleName()), ApplicationIngestionRequest.class, request); 

    StringWriter writer = new StringWriter(); 
    JAXBContext context = JAXBContext.newInstance(ApplicationIngestionRequest.class); 
    context.createMarshaller().marshal(jaxbElement, writer); 
    LOG.info("JAXBElement object :\n"+ writer.toString()); 
    Unmarshaller u = context.createUnmarshaller(); 
    JAXBElement<ApplicationIngestionRequest> o = (JAXBElement<ApplicationIngestionRequest>) u.unmarshal(new StringReader(writer)); 

Вход дает мне следующий вывод

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ApplicationIngestionRequest><BranchCode></BranchCode><SourceCode>0000005511</SourceCode></ApplicationIngestionRequest> 

Теперь, когда я пытаюсь установить в качестве метода

losRequest.setData(o.toString()); 

Это не позволяет мне установить, как его ожидали в формате JAXBElement. Любые идеи очень приветствуются.

+0

1) Что такое 'o'? 2) Почему вы бросаете 'значение' в тот же тип, с которым он объявлен (это необязательно)? 3) Вызов 'toString()' для любого объекта возвращает ... ну, он возвращает строку, а не 'JAXBElement '. Что именно вы пытаетесь достичь? 4) «Это не позволяет мне». Какая у вас ошибка? – Seelenvirtuose

+0

@Seelenvirtuose Я обновил вопрос. Я просто хочу преобразовать этот вывод XML как строку JAXBElement, чтобы я мог установить его в этом методе. – Syed

ответ

0

В соответствии с фрагментом кода [setData (значение JAXBElement)], setData, принять экземпляр '(JAXBElement'). Но здесь вы пытаетесь установить строковое значение [losRequest.setData (o.toString())]. Здесь вы должны установить экземпляр «JAXBElement». Это может быть проблемой.

+0

Можете ли вы рассказать мне, как преобразовать этот объект XML в объект JAXBElement String? – Syed

+0

Попробуйте это, новый JAXBElement (o.toString()); –

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