【发布时间】:2018-08-08 09:56:11
【问题描述】:
我想将字符串 xml 转换为 Object 类型类。因为我有一个返回对象类型的休息服务。因为我需要根据响应字符串将响应作为动态创建的 xml 返回。但是当我尝试将字符串 xml 转换为 Object 类时,它显示以下错误:
javax.xml.bind.UnmarshalException:意外元素
我会为你分享我的代码,也许我做错了什么。
服务方式:
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Object sendReqXML(RequestModel request)
{
try {
XmlAPI.getInstance().addHeader("Content-Type","text/xml; charset=utf-8");
XmlAPI.getInstance().addHeader("SOAPAction",request.getAction());
return XmlAPI.getInstance().post(request.getUrl(), request.getAction(), Parser.loadXML(request.getData()), new CallBackEpul());
}
catch (Exception e) {
e.printStackTrace();
return e.getMessage();
}
}
解析器方法:
public static Object loadXMLToObject(String xml) throws Exception
{
JAXBContext jaxbContext = JAXBContext.newInstance(Object.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
//jaxbUnmarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringReader reader = new StringReader(xml);
Object object = (Object) jaxbUnmarshaller.unmarshal(reader);
//LOGGER.info(car.toString());
return object;
}
xml 字符串:
"<ResultCodes>UnknownError</ResultCodes><Description>Unknown Error</Description>"
我怀疑它可能与 @xmlrootelement 必须在返回类型对象中声明。因为当我创建具有 @XmlRootElement 和 @XmlElement 标记的模型类并返回自身时,它对于对象类可以正常工作。
提前致谢。
【问题讨论】:
标签: java xml jax-rs marshalling unmarshalling