2009-05-14 23 views
2

私が作成したColdFusion Webサービスに問題があります。このサービスは、Base64でエンコードされたXMLデータを受け入れ、アーカイブ目的でディスクに書き込みます。このファイルは、基本的なスキーマのチェックを受け、次のように任意のエラーがユーザーに戻って報告されます。ColdFusion WebサービスのSOAP応答構造

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
     <UploadXMLResponse xmlns="http://url"> 
      <UploadXMLReturn> 
       <AuthMessage>Authentication successful</AuthMessage> 
       <AuthStatus>Success</AuthStatus> 
       <FileInfo>File Example.xml was successfully uploaded</FileInfo> 
       <UploadStatus>Success</UploadStatus> 
       <xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">1824</xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">Error Message</xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">23</xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">1824</xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">Error Message</xmlValErrors> 
        <xmlValErrors xsi:type="xsd:string">38</xmlValErrors> 
       </xmlValErrors> 
       <xmlValMessage>Schema validation generated errors</xmlValMessage> 
       <xmlValStatus>Failure</xmlValStatus> 
      </UploadXMLReturn> 
     </UploadXMLResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

問題は<xmlValErrors>要素が少し奇妙な方法にネストされていることです。これは、ColdFusionがエラーの配列を処理する方法によるものです。その結果、ユーザーは応答を分析しようとすると、最初の<xmlValErrors>要素しか見ることができません。

.Netは、他の多くの要素が明白に含まれていても、<xmlValErrors>要素を空の配列として認識しているため、特に問題があるようです。

この問題は、<xmlValErrors>要素内の子要素に名前の再利用があると考えられます。しかし、私はColdFusionでこれを回避する方法を見つけることができませんでした。

これがどのように解決されるかについての考えは非常に高く評価されます。

答えて

2

どのようにxmlValErrorsにアクセスしましたか?

uploadxmlreturn.xmlvarerrors.xmlvarerrors

親、エラーの配列の2番目に最初のxmlvarerrorsポイント:エラーのあなたの配列は、親xmlVarErrorsの内部にあるので、あなたはそうのようにアクセスします。

意味がありますか?

1

XMLとSOAPのどちらも私の強みではありませんが、xmlValErrorsのサブ要素は「xmlValErrors」と呼ばれてはいけません。それらをそれぞれ "xmlValError"にしたくありませんか?

+0

アル、それはまさに私の問題です。 Coldfusionが出力を構造化する方法を扱う視点か、Coldfusionが出力を構造化する方法を扱う観点のどちらかから、誰かが答えられることを期待しています。または.Netが子要素を見ることを可能にする解決法を提供することによって、たとえそれが面倒な名前を付けられているとしても。 –