问题复现
在创建入参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);