0

saaj(axis2-saaj-1.5.4)を使用してcdataセクションをsoapメッセージに追加しようとしています。cdataセクションとして定義してsoapドキュメントの本文内の要素に配置したいxmlドキュメントがあります...次のようなものです(これによりコンパイラエラーが発生します):

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

skaffmanが提案したように、saajの代わりに公理を使用してこれを解決しました。

以下のサンプルコードには、axiom-api-1.2.8.jarとaxiom-impl-1.2.8.jarを使用しました。

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());

これは非常にうまく機能しているようで、'<'タグを&lt;に変換しません。

于 2011-03-29T14:23:12.667 に答える
0

XMLのルート要素をCDATAセクションで囲み、「element.addTextNode(xmlString)」で要素にXMLを追加するだけで、SAAJでCDATAセクションを追加することができました。

その結果、XMLエンティティはCDATAセクションがない場合のようにエスケープされませんでした。

乾杯、トルステン

于 2011-04-15T08:12:43.083 に答える