Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

SOAPでXMLを受信時にエラー

はじめまして。
Axis1.1を使用したSOAP通信で、XMLデータを取得しようとしています。XMLデータによって、正常に取得できる場合と、できない場合があります。取得できない時は、下記のような例外が出力されます。
データは、特に複雑なXMLというわけではなく、階層の深さが1つ違うのみです。
この現象についてどなたかご存知の方がいましたら教えてください。

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:189)
at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:963)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
at org.apache.axis.client.Call.invoke(Call.java:2272)
at org.apache.axis.client.Call.invoke(Call.java:2171)

6

回答

6235

閲覧

6件の回答

評価

0

使ってないので分かりませんが。

http://forums.oracle.com/forums/thread.jspa?threadID=333757&tstart=0

このあたりが、もしかして参考になるかも。

評価

0

SimpleDeserializer encountered a child element, which is NOT expected.
↑エラーメッセージを翻訳してみて下さい。
期待している階層構造のXMLではない、というエラーです。

>階層の深さが1つ違うのみです。
と言うのは重要な要因ですよ。

評価

0

ご回答いただきありがとうございます。
確かに、エラーメッセージを見るとXMLが原因のようにも思えるのですが、受信しようとしていうXMLの構造は問題ないと思います。
このエラー内容が、プログラムによるものか、Axisによるものなのかだけでも明確にできないものでしょうか?
重ね重ね申し訳ございませんが、宜しくお願い致します。

評価

0

質問
(1)受信しようとしているXMLの構造に問題は無いと思う根拠は何ですか?
(2)プログラムを示さず、エラー内容がプログラムによるものかAxisによるものか判断できると思いますか?

本当に解決を望むのでしたら、外部に漏らしたら問題のある部分を除いたソースやXMLを示して質問した方が良いと思います。

そうすれば、誰か答えてくれるかも知れません。

評価

0

おっしゃる通りです。申し訳ございません。

(1)XML構造ですが、下記のような4階層構造になります。
また、根拠ですが、IEで表示したい際にエラーにならなかったことで問題ないと判断しました。

<?xml version="1.0" encoding="Shift_JIS" ?>

<aaa>
    <bbb> 
        <あ>
            <い></い>
            <う>11111</う>
            <え></え>
        </あ>
    </bbb>    
</aaa> 

(2)なかなか切り出しにくいのですが、下記のinvokedでエラーになります。

ReadXml read = new ReadXml();
Document SendDataDoc = null;
invoked;
try {
    SendDataDoc = read.getDocument();
}
catch (Exception e1) {
    printStackTrace();
    throw new WSCollaborationException(e1);
}

お手数をかけますが何卒宜しくお願い致します。

評価

0

(1)I.E.で表示して確認できるのは単純にXML文書としての構造が正しいか、です。言い換えると開始タグと終了タグの組み合わせが正しいか、とかのチェックのみです。
それとは別に、XMLのタグの名前や階層構造まで定義してあるのがDTDやXMLスキーマと呼ばれるものです。
今回はその階層構造の定義に反するXMLを読み込もうとしたためにエラーが起きたのだと思われます。
受信そのものは正常に行っているはずです。

(2)恐らくソースも問題ありません。
問題があるのはXMLか、階層構造の定義ファイルです。
今ある情報で判るのはこのぐらいでしょうか。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。