Java 如何从Apache CXF REST服务返回XML并将其转换为json?
我使用ApacheCXF和Spring构建了一个简单的REST服务。我正在使用扩展映射来根据URL返回json或xml(http://.../hello.json 等等)。当返回JAXB注释的Java类时,这种方法非常有效 有没有一种简单的方法可以让ApacheCXF自动将手工编制的XML转换为json?我需要从我的服务中返回什么 我知道我可以按如下方式返回XML,但这不会自动将XML转换为json:Java 如何从Apache CXF REST服务返回XML并将其转换为json?,java,json,web-services,cxf,jax-rs,Java,Json,Web Services,Cxf,Jax Rs,我使用ApacheCXF和Spring构建了一个简单的REST服务。我正在使用扩展映射来根据URL返回json或xml(http://.../hello.json 等等)。当返回JAXB注释的Java类时,这种方法非常有效 有没有一种简单的方法可以让ApacheCXF自动将手工编制的XML转换为json?我需要从我的服务中返回什么 我知道我可以按如下方式返回XML,但这不会自动将XML转换为json: public Response get() { return Response.sta
public Response get() {
return Response.status(200).type(MediaType.TEXT_XML).entity("<hello>world</hello>").build();
}
公共响应get(){
返回Response.status(200).type(MediaType.TEXT_XML).entity(“world”).build();
}
我将从文件系统或其他存储中返回静态XML文档。我需要能够返回json。我最终采用了不同(更好)的方法。XML文档由servlet提供,并使用以下代码转换为json:
public void convertXmlToJson(InputStream in, OutputStream out) throws XMLStreamException {
XMLEventReader xmlIn = XMLInputFactory.newFactory().createXMLEventReader(in);
OutputStreamWriter osw;
try {
osw = new OutputStreamWriter(out, "UTF8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.toString(), e); // not possible really
}
MappedXMLStreamWriter jsonOut = new MappedXMLStreamWriter(new MappedNamespaceConvention(), osw);
AbstractXMLEventWriter xmlOut = new AbstractXMLEventWriter(jsonOut);
while (xmlIn.hasNext()) {
XMLEvent ev = xmlIn.nextEvent();
if (ev instanceof Characters && ((Characters)ev).isWhiteSpace()) {
continue;
}
xmlOut.add(ev);
}
xmlOut.close();
}
我可以从代码中看出,JSONProvider将使用JAXBElement,并通过返回一个伪JAXBElement来验证这一点。那么,如何将XML文本转换为JAXBElement的树呢?还是有其他办法?