Java 如何从Apache CXF REST服务返回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

我使用ApacheCXF和Spring构建了一个简单的REST服务。我正在使用扩展映射来根据URL返回json或xml(http://.../hello.json 等等)。当返回JAXB注释的Java类时,这种方法非常有效

有没有一种简单的方法可以让ApacheCXF自动将手工编制的XML转换为json?我需要从我的服务中返回什么

我知道我可以按如下方式返回XML,但这不会自动将XML转换为json:

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的树呢?还是有其他办法?