我知道在使用Marshaller时如何打开格式的可能性.但我正在使用Apache CXF(JAX-RS)并返回响应,如返回Response.ok(entity).build();.

我还没有找到任何选项如何格式化输出.我该怎么做?

解决方法

首先,获取格式化 XML输出的方法是在marshaller上设置正确的属性(在使用CXF时通常是JAXB,这是正常的,因为JAXB做了可靠的工作).也就是说,在某个地方你会有这样的事情:
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);

问题是您不一定要将所有输出格式化;它增加了相当多的开销.幸运的是,你已经产生了一个明确的响应,所以我们可以使用更多的功能:

Marshaller marshaller = JAXBContext.newInstance(entity.getClass()).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);
StringWriter sw = new StringWriter();
marshaller.marshal(entity,sw);

return Response.ok(sw.toString(),MediaType.APPLICATION_XML_TYPE).build();

在this JIRA issue中提到了另一种方法(本身已关闭,但这对你来说不是一个问题):

The workaround is to register a custom output handler which can check whatever custom query is used to request the optional indentation:

07001

JAXBElementProvider and JSONProvider are driven by the JAXB Marshaller so by default they check a Marshaller.JAXB_FORMATTED_OUTPUT property on the current message.

这导致代码如下:

public class FormattedJAXBInterceptor extends AbstractPhaseInterceptor<Message> {
    public FormattedJAXBInterceptor() {
        super(Phase.PRE_STREAM);
    }

    public void handleMessage(Message message) {
        message.put(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
    }

    public void handleFault(Message messageParam) {
        message.put(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
    }
}

CXF网站discusses registration of interceptors.

java – CXF中的格式化XML输出?的更多相关文章

  1. Swift - 解析XML格式数据分别使用GDataXML和DDXML

    下面演示了两个非常方便高效的XML库在Swift里的调用方法。假设需要被解析的XML数据文件users.xml如下:1234567891011121314151617

  2. android – Inflate ActionBarSherlock菜单以XML格式定义

    解决方法试试这个

  3. php判断str字符串是否是xml格式数据的方法示例

    这篇文章主要介绍了php判断str字符串是否是xml格式数据的方法,结合实例形式较为详细的分析了php采用自定义函数针对xml格式数据进行验证的相关操作技巧,需要的朋友可以参考下

  4. PHP SoapClient格式错误的xml

    我正在使用PHP与SOAP中的web服务进行通信.这是我的代码:出于某种原因,XML是错误的:当XML节点名称应该是变量名时,它是如何变换的?我究竟做错了什么??谢谢更新:所以我列出了该Web服务的功能,我得到的是:我改变了我的电话,现在是:XML仍然是错误的:我仍然得到SomeKeySomeValue代替someValue中所以问题是,Web服务不能正常运行还是我的结束?如果我是你,我会尝试以对象格式设置$data.例如:

  5. php – XML Feed数据中的字符无效

    我有一个Feed,我将数据从中提取到数据库中.它以XML格式提供数据.但是,数据包括“非法”字符.例如:要么要么要么我的问题首先是,如何识别这些字符的编码,其次,如何更改编码以匹配我的数据库所需的UTF8格式?

  6. CentOS下安装protobuf

    二、protobuf安装获取安装包:官网地址或者CSDN解压安装包到指定目录、重命名:准备开始编译和安装:安装过程很简单,完成,开始使用吧~

  7. 是否可以将带有PHP的XML格式发送到sql server

    美好的一天,我正在尝试从我的网站(PHP)导入XML文件.我做了一些关于它的研究,我发现这个Passingdatatabletoastoredprocedure但是对于C#.那么,是否可以发送它?这是我的存储过程我试过这种方式使用上面的脚本我得到了这个错误ErrorNumber:22018/206[Microsoft][sqlServerNativeClient10.0][sqlServer]Op

  8. Cobertura格式的PHPUnit报道

    我有一个小PHP项目,它使用PHPUnit进行单元测试和覆盖.我想用coberturaXML格式生成覆盖率报告.我可以使用任何工具或插件来实现这一目标吗?任何帮助表示赞赏..PHPUnit生成的代码覆盖率信息日志记录的XML格式基于Clover使用的格式.

  9. PHP / SimpleXML – 为单个子项和多个子项生成不同的数组

    我正在使用SimpleXML来解析来自不同房地产经纪人的属性列表的XML提要.XMLFeed的相关部分看起来像这样:然后转换为这样的数组:我遇到的问题是,当创建数组时,单个列表的数据在数组中与多个列表的位置不同–我不确定如何解释这个,但如果我var_dump()它看起来像这样的多个项目的数组:如果我var_dump()单个列表的数组,它看起来像这样:但我需要它看起来像这样:这些数组中的每一个都代表

  10. 前端知识点总结——AJAX

    前端知识点总结——Ajax1.ajax2.HTTP协议2.1请求头2.2响应消息2.3原因短句3.缓存1.什么是缓存&工作原理4.AJAX1.名词解释2.AJAX5.使用ajax发送post请求注意两点:6.js对象数据格式1.js对象的数据格式那么她的个人信息就是她这个对象的属性。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部