0

我正在尝试使用 saaj (axis2-saaj-1.5.4) 将 cdata 部分添加到肥皂消息中。我有一个 xml 文档,我想将其定义为 cdata 部分,并将其放入soap文档主体内的一个元素中......类似于以下内容(尽管这会导致编译器错误):

Element cdataElem = doc.createElement("cdata");
CDATASection cdata = doc.createCDATASection(xmlDocAsString);
cdataElem.appendChild(cdata);

SOAPMessage message = factory.createMessage();
soapMessage.getSOAPBody().addChildElement(cdataElem);

我找不到正确执行此操作的方法,并且我确定它应该很简单...有人可以帮忙吗?

谢谢

4

3 回答 3

3

我有一个类似的问题。最后我得到了一个使用 saaj 的解决方案:

SOAPMessage message = factory.createMessage();

message.getSOAPBody().addChildElement(message.getSOAPpart().createCDATASection(xmlDocAsString));

显然 SOAPPart 似乎充当 DOM 文档。

于 2012-07-17T12:29:21.570 回答
1

I've resolved this using axiom instead of saaj as suggested in by skaffman.

I've used axiom-api-1.2.8.jar and axiom-impl-1.2.8.jar for sample code below:

SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = factory.getDefaultEnvelope();
OMElement xmlElement= factory.createOMElement("search", envelope.getDefaultNamespace());
envelope.getBody().addChild(xmlElement);

OMTextImpl omText = (OMTextImpl) xmlElement.getOMFactory().createOMText(xmlElement, xmlForCdata, XMLStreamConstants.CDATA);
xmlElement.addChild(omText);

System.out.println(envelope.toStringWithConsume());

This seems to work very nicely and doesn't convert '<' tags to & lt;

于 2011-03-29T14:23:12.667 回答
0

我设法通过简单地用 CDATA 部分包围我的 XML 的根元素,然后用“element.addTextNode(xmlString)”将 XML 添加到元素中,用 SAAJ 添加了一个 CDATA 部分

因此,XML 实体没有像没有 CDATA 部分那样进行转义。

干杯,托斯滕

于 2011-04-15T08:12:43.083 回答