2011-10-30 9 views
1

私のようであるサーバーからXML-件のデータが供給しています:Xml-Root要素のタグが閉じているかどうかを確認する方法?

<SystemAsync timestamp="1289734897" status="stopped" time="0"/> 

か:

<SystemAsync timestamp="1289734897" status="stopped" time="0"> 
    <AntTable antstatus="ready" active="1"/> 
</SystemAsync> 

XMLを解析問題ありません。私があれば、チェックすることができますどのように

</SystemAsync> 

を:しかし、サーバが2つの分割さパーツXMLデータの

<SystemAsync timestamp="1289734897" status="stopped" time="0"> 
    <AntTable antstatus="ready" active="1"/> 

2.part XMLデータの

1.partでXMLデータを送信することができますXMLデータが終了していないので、私は2つの部分を待つことができます。

これは、サーバー/クライアントソケットシステムです。

私のサーバーは、rootserverからXML-件のデータをrecieves、およびすべてのクライアントにXMLデータを送信します。

ありがとうございました!

+0

あなたは* *ので、より多くのデータ;-) – BrokenGlass

+0

のために待っていれば、受信したファイルが有効なXMLであれば多分あなたは、単にテストすることができ、現在のデータは無効なXMLであるかどうかを確認できます。 –

+1

サーバは断片の合計の長さ(バイト)または数値を単に伝えるだけではありませんか? –

答えて

1

サーバが送信者のメッセージを区切るために必要です。それは基本的にそれが完了したときにあなたに伝える必要があります。 「とき、私は例外を取得して停止しない」にあなたのコードを基づか

は良いアイデアではありません。もしあなたがになれば、は例外を止めませんか?

0

私は、この特定のケースでの質問は、XML文書全体の検証の問題に、より一般化することができ信じています。複数のチャンクでデータを送信することが有効なケースであることを考慮すると、使用している通信プロトコルが、すべてのデータが送信されたことを示すEndOfStreamマーカー/メッセージのようなものを提供するならば素晴らしいでしょう。多くのメッセージングシステムでは、Message Index/Sequence Numberなどの機能のサポートが組み込まれています。おそらくサポートしているプロトコルなので、接続を初期化している間は有効にして、提供されている場合はドキュメントを参照してください。

そうでない場合、あなたは次の1つのチャンクを受信した各時間をチェックし実行するためにきました。

便利なリンク:

+0

サーバは常に有効なxmlを送信しています。私は検証のためにチェックしようとします – Racooon

+0

あなたは自己作成のコミュニケーションやメッセージングシステムを使っていますか? – sll

+0

その自作通信ではありません。私はサーバー/クライアントを作成しましたが、私のサーバーは別のサーバー(プロバイダ)から受信しています – Racooon

関連する問題