0

EclipseGalileoで実行されているjunitテストでWebサービス呼び出しからの応答を読み取ろうとしています。応答がSOAP障害である場合を除いて、応答を正常に受信できます。次に、次の例外が発生します 。org.xml.sax.SAXParseException:要素タイプ "SOAP:Text"の後には、属性指定">"または"/>"のいずれかを続ける必要があります。

LiquidXMLStudioのXMLをSOAP1.2スキーマに対して検証し、チェックアウトしました。

これは、SAXが窒息しているように見えるXML応答です。明らかなものを排除するために、最小限に抑えられています(自己閉鎖要素がないことを確認しました)。

<SOAP:Envelope xmlns:SOAP="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP_ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP:Header> </SOAP:Header> <SOAP:Body> <SOAP:Fault> <SOAP:Code> <SOAP:Value>SOAP:Sender</SOAP:Value> <SOAP:Subcode> <SOAP:Value>SOAP:Sender</SOAP:Value> </SOAP:Subcode> </SOAP:Code> <SOAP:Reason> <SOAP:Text xml:lang=""> </SOAP:Text> </SOAP:Reason> <SOAP:Node> </SOAP:Node> <SOAP:Role> </SOAP:Role> <SOAP:Detail> </SOAP:Detail> </SOAP:Fault> </SOAP:Body> </SOAP:Envelope>

どんな助けでもいただければ幸いです。

4

3 に答える 3

0

明らかに'xml:lang=""'を属性として認識していません。有効な属性をxsdまたはxmlSchemaで確認してください。また、あなたは使用する必要があります

xml:lang=&quot;&quot;

ほとんどのパーサーはこれを許しますが、""ではありません。

于 2010-11-09T03:52:23.843 に答える
0

問題は、soapfaultxmlを対応するオブジェクトにマッピングすることだと思います。

于 2010-11-09T03:57:51.697 に答える
0

この問題は、Web サービス要求に対して静的な文字列応答を返すために使用していたツールに関連していたことが判明しました。静的応答 XML に xml:lang 属性が含まれていました。ただし、ツールが静的文字列を返すとき、途中でそれを変更し、オンザフライで xml:lang を完全に修飾された名前空間に相当する {http://www.w3.org/XML/1998/名前空間}lang. この応答を受信したとき、SAXParser は、完全に修飾された同等のものを解釈できなかったため、窒息していました。

静的応答を返すツールは、Groovy xml パーサーを応答送信の不可欠な部分として使用しました。XmlParser Groovy クラスにはコンストラクターがあり、validating 属性と namespaceAware 属性を false に設定するために変更する必要がありました。そのため、ツールは XmlParser() の代わりに XmlParser(false, false) を呼び出すようになりました。問題が解決しました。回答ありがとうございます。

于 2010-11-12T00:41:50.080 に答える