CDATA-Abschnitt in der SOAP-Request-XML
Ich bin mit einem JAX-WS-service. Im folgenden ist der Teil der Anfrage-Klasse.
@XmlElement(name = "Answers")
protected String answers;
Nun, in der eigentlichen SOAP-Anfrage, die Antworten gesendet werden müssen, in der xml als CDATA. Es gibt einen separaten stub-Klasse für die Antworten. Also, ich bin marshalling des Objekts dieser Klasse in ein xml. Ich bin um diese in CDATA-tags wie unten gezeigt:
xmlstr = "<![CDATA[" + xmlstr + "]]>";
Daher mein request-xml sollte so Aussehen:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<!-- Other tags -->
<Answers>
<![CDATA[
<TagOne></TagOne>
<TagTwo></TagTwo>
]]>
</Answers>
</S:Body>
</S:Envelope>
Jedoch, wenn die Anforderung zum server gesendet, von der SOAPLoggingHandler, sieht es wie folgt aus:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<!-- Other tags -->
<Answers>
<![CDATA[
<TagOne></TagOne>
<TagTwo></TagTwo>
]]>
</Answers>
</S:Body>
</S:Envelope>
Durch das escaping von Zeichen, erhalte ich die Antwort sagen: "Ungültige Antworten xml-format". Ich habe 2 Fragen:
-
Ist xmlstr = "" die richtige Methode zur Erstellung eines CDATA-xml-Code aus einer Bohne? Wenn nicht, dann ist es keine standard-Weg, dies zu tun?
-
Wenn ich senden möchten den CDATA-Abschnitt in der Anforderung, ohne die Flucht, welche änderungen sollte ich machen in meiner Implementierung?
Lassen Sie mich wissen, wenn etwas anderes erforderlich ist.
- Warum braucht es, um gesendet zu werden, als ein CDATA-Abschnitt? Es sollte nicht egal, wie die Daten dargestellt werden, die in der XML (im CDATA-oder nur-mit speziellen Zeichen mit Einheiten).
- mögliche Duplikate von so erzeugen Sie CDATA-block mit JAXB?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die situation hier ist Ihre java-Objekt-Repräsentation nicht ganz mit dem übereinstimmen, was Sie möchten, um zu sehen, in der XML. Und nehme an, Sie verwenden mit JAXB JAX-WS, dann können Sie eine adapter-Klasse für das element in der bean mit XmlJavaTypeAdapter annotation.
In Ihrem bean:
Weitere details Lesen Sie bitte Mit JAXB 2.0 XmlJavaTypeAdapter