Преобразовать строку в JAXBElement, используя Java
У меня возникли проблемы при преобразовании объекта String в строковый объект JAXBElement, где мне нужно установить этот
Это целевой метод, где мне нужно установить значение
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. Любые идеи очень приветствуются.
1 ответ
Согласно фрагменту кода [setData(значение JAXBElement)], setData, принять экземпляр '(JAXBElement'). Но здесь вы пытаетесь установить строковое значение [losRequest.setData(o.toString())] . Здесь вы должны установить экземпляр JAXBElement. Это может быть проблемой.