1

我有一个WS生成SOAP XML消息的。由于大小限制,我想删除不必要的空格(用于缩进)和新行。@WebService使用生成的类和注释(和)时如何做到这一点@WebMethod?在我看到的示例中,它是这样完成的:

Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);

但是,我不是手动创建的,Marshaller所以我不知道我可以在哪里添加这个属性,以及这是否是正确的做法。JAXB实施axis2是.

4

2 回答 2

1

创建一个自定义 JAXBContext 并注释您的 web 服务,如下所述:

    @WebService(serviceName = "Hello")
    @UsesJAXBContext(value = CustomJaxbContext.class)
    public class HelloWS
    {   ...
    }

    public class HelloJaxbContext implements JAXBContextFactory
    {
      @Override
      public JAXBRIContext createJAXBContext(SEIModel seim, List<Class> classesToBind, List<TypeReference> typeReferences) throws JAXBException {
          //JAXBRIContext extends JAXBContext, so you should be able to set the desired marshaller properties
          //create your jaxb context with necessary properties for marshalling
          return yourJAXBRIContext;
       }  
    }

参考http://javasourcecode.org/html/open-source/jdk/jdk-6u23/com/sun/xml/internal/ws/developer/JAXBContextFactory.html

于 2013-05-21T10:54:50.963 回答
0

<dataFormats><jaxb prettyPrint=false></dataFormats>这个漂亮的 Print 标志将以压缩方式格式化 xml 文件并删除 crlf

于 2019-12-12T09:53:15.043 回答