2015-03-28 4 views
8

Meine Wrapper-Klasse ist dies:Nicht Einführung CDATA mit nur einem Wert

@XmlRootElement(name = "GETA") 
public class EfGetAResponseWrapperXmlObject { 

    private String something; 


    @XmlElement(name = "result") 
    public String getSomething() { 
     return something; 
    } 

    public void setSomething(String something) { 
     this.something = something; 
    } 

} 

Für diese Wrapper-Klasse bekomme ich diese Antwort auf SoapUI:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
     <S:Body> 
      <ns2:ef_getAresponse xmlns:ns2="http://service.package/"> 
      <ef_get_AReturn>&lt;GETA> 
     &lt;result>mystring&lt;/result> 
    &lt;/GETA></ef_get_AReturn> 
      </ns2:ef_get_AResponse> 
     </S:Body> 
    </S:Envelope> 

Wenn ich eine weitere Variable in meine Wrapper einführen Klasse:

@XmlRootElement(name = "GETA") 
    public class EfGetAResponseWrapperXmlObject { 

     private String something; 
     private String other; 


     @XmlElement(name = "result") 
     public String getSomething() { 
      return something; 
     } 

     public void setSomething(String something) { 
      this.something = something; 
     } 

     public String getOther() { 
      return other; 
     } 
     public void setOther(String other) { 
      this.other = other; 
     } 
    } 

ich diese Antwort:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:ef_getAresponse xmlns:ns2="http://service.package/"> 
     <ef_get_AReturn><![CDATA[<GETA> 
    <result>fasf</result> 
    <other>fds</other> 
</GETA>]]></ef_get_AReturn> 
     </ns2:ef_getAresponse> 
    </S:Body> 
</S:Envelope> 

Ich verstehe dieses Verhalten nicht. Ich möchte die gleiche Antwort auf den ersten Fall haben, den ich im zweiten Fall habe. Wie kann ich das machen?

+0

http://forums.asp.net/t/1624525.aspx?Vermeiden Sie + XML + Webservice + SOAP + von + geschlossenen + Daten in + CData +. –

+0

Haben Sie versucht, das Feld mit '@ XmlTransient' zu kommentieren, wie in http://stackoverflow.com/a/10968561/1295364 – carcaret

+0

Meinst du, dass die erste Antwort mit allen" <"Escapezeichen erzeugt wird? Der Hauptgrund, warum JAXB/JAXWS automatisch Ihre Antwort "CDATA" nennt, ist, ob Markup oder ein anderer entwurfsfähiger Inhalt darin enthalten ist. Ihre zweite Antwort sieht nicht so aus, als wäre das notwendig gewesen. Vielleicht solltest du in deine ObjectFactory schauen, * warum * es passiert. Um zu lösen, verwenden Sie einfach die Empfehlung von Carcaret – kolossus

Antwort