Как добавить раздел CDATA в SOAPMessage, используя SAAJ? - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь добавить раздел cdata в мыльное сообщение, используя saaj (axis2-saaj-1.5.4). У меня есть XML-документ, который я хотел бы определить как раздел cdata и поместить его в элемент внутри тела мыльного документа ... что-то вроде следующего (хотя это вызывает ошибки компилятора):

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

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

Я не могу найти способ сделать это правильно, и я уверен, что это должно быть просто ... кто-нибудь может помочь?

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 июля 2012

У меня была похожая проблема. Наконец я получил решение с помощью saaj:

SOAPMessage message = factory.createMessage();

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

Очевидно, что SOAPPart действует как документ DOM.

1 голос
/ 29 марта 2011

Я решил это, используя аксиому вместо saaj, как предложено в skaffman.

Я использовал 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; </p>

0 голосов
/ 15 апреля 2011

Мне удалось добавить раздел CDATA с SAAJ, просто окружив корневой элемент моего XML разделом CDATA и затем добавив XML к элементу с помощью "element.addTextNode (xmlString)"

результат: сущности XML не были экранированы, как и без секции CDATA.

Cheers, Torsten

...