2

これは私のXML タグEnvelopexsi:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"宣言を入れた私のrequestです。myRequestMethod

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:sd="http://www.foo.bar/ws" 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soapenv:Header/>
    <soapenv:Body >
     <sd:myRequestMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <sd:name xsi:nil="true"/>

これは動作します (SoapUI でテスト済み) が、ユーザーが SOAP クライアントを生成すると、次のようにxsi:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"宣言が自動的にEnvelopeタグに挿入されます (最も外側のタグ)。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:sd="http://www.foo.bar/ws" 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header/>
    <soapenv:Body >
     <sd:myRequestMethod>
       <sd:name xsi:nil="true"/>

これは彼に

The namespace associated with the prefix 'xsi' could not be resolved.   

これは通常の動作ですか? 内部タグにない場合、石鹸はそれを理解できませんか? または、spring-ws を何らかの方法で構成して許可することはできますか? ユーザーはクライアントとリクエストを自動生成するため、自分の側を変更することはできません。

4

3 に答える 3

1

両方の XML は、XML 名前空間の正当な使用のインスタンスです。宣言されたすべての名前空間プレフィックスが適切に伝播されずにbodyのコンテンツが処理されるというドキュメント処理インフラストラクチャのバグが疑われます。

于 2013-01-02T12:23:47.623 に答える
0

WebServiceメソッドの作成中に、nameSpaceを指定できます。それを自分で生成するようにすると、同様のエラーが発生します。名前空間を変更すると、解決されます。

このようなことをしてみてください、

@WebMethod(operationName = "operation")

@WebResult(name = "Response",targetNamespace = ServiceConstant.TARGET_NAME_SPACE)

Response operation(@WebParam(name = "input", mode = WebParam.Mode.IN)Request Request);

したがって、今回はカスタマイズされた名前空間を定義しました。これには、SOAPUI/SOAクライアントかどうかに関係なくクライアントが続きます。

お役に立てれば

于 2013-01-02T12:34:34.200 に答える
0

castor JIRA から関連するバグを見つけました。

まだ解決していないと思います。したがって、これはバグのままです。

http://jira.codehaus.org/browse/CASTOR-2813

より具体的には、たとえば XML ドキュメントのルート要素で名前空間情報が提供され、誰かがそのドキュメントのサブノードをアンマーシャリングしたい場合に問題が発生します (Unmarshaller#unmarshal(org.w3c.dom.ノード))。サブノードには、名前空間がルート要素で宣言されているため、Castor が探している XML 名前空間属性がありません。

この場合、ある要素で属性 (xsi.*) が一致しますが、Castor は名前空間を知りません。そのため、おそらく XML が無効であると考えられ、エラーがスローされます。

于 2013-01-03T07:14:41.807 に答える