2011-08-10 8 views
1

私は文字列を引数として受け取り、出力として文字列を返す単純なWebサービスを作成しました。AXiS2 - 文字列値を返す際の問題。 < and >は<に変換され、>

サービスは、このようなものです:クライアント側で

@WebService(name = "MyWebService", serviceName = "MyWebService", portName = "WS") 
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 
public class MyWebService { 

    @WebMethod(action = "inputString") 
    @WebResult(name = "resultString") 
    public String serviceMethod(
      @WebParam(mode = WebParam.Mode.IN, name = "inputString") String inputString) { 
     resultString ="<?xml version='1.0' encoding='UTF-8'?><Element><InnerElement>ElementValue</InnerElement></<Element>" 
     System.out.println(resultString); 
     return resultString; 
    } 

} 

私が取得しています:

&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;Element&gt;&lt;InnerElement&gt;ElementValue&lt;/InnerElement&gt;&lt;/&lt;Element&gt; 

この入力は<かを見つけようとするサードパーティのパーサで使用されている>と私のアプリケーションは壊れます。

誰でもこの問題を抱えていますか?何が問題なのでしょうか? 提案は大歓迎です。

答えて

3

私はそれを研究するのに多くの時間を費やすことはできませんが、私が最後に見たときには、XML文書を別のXML文書の一部として返す良い定義された方法はありませんでした。ここでやろうとしている。読んで覚えていることから、たとえCDATAセクションであっても、問題が発生する可能性があります。あなたが見ているのは、XMLの文字の標準的なエンコーディングです。私が正しいことを覚えていれば、XMLヘッダがCDATAセクションを壊してしまいますが、もう一度、私はそれを見てから長い時間です。

HTH

0

おそらくWSDLにはxsd:stringがあるので、これは文字列であるため特別な文字 '<'、 '>'を変換する必要があります。 wsdlドキュメントをexに変更します。 xsd:any。

+0

よくwsd:anyは使用できません。 –

関連する問題