axiom OMElement.setText()转义问题

问题复现

在创建入参OMElement接电时,如果这样写会自动将<进行转义。

OMElement omElement = fac.createOMElement(key, namespace);
omElement.setText(value);
method.addChild(omElement);

解决

添加CDATA节点可以防止对内部字符进行转义,但是如果直接拼接进value中,CDATA也会被转义,所以需要axiom的方式来设置CDATA。

SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = factory.getDefaultEnvelope();
OMElement xmlElement= factory.createOMElement(key, namespace);
envelope.getBody().addChild(xmlElement);
OMTextImpl omText = (OMTextImpl) xmlElement.getOMFactory().createOMText(xmlElement, value, XMLStreamConstants.CDATA);
xmlElement.addChild(omText);
method.addChild(xmlElement);

你可能感兴趣的:(Java,webservice,axis2,axiom)