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>
        &lt;![CDATA[
            &lt;TagOne>&lt;/TagOne&gt;&#13;
            &lt;TagTwo>&lt;/TagTwo&gt;&#13;
        ]]&gt;&#13;
    </Answers>
</S:Body>
</S:Envelope>

Durch das escaping von Zeichen, erhalte ich die Antwort sagen: "Ungültige Antworten xml-format". Ich habe 2 Fragen:

  1. 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?

  2. 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?
Schreibe einen Kommentar