C#.NET 4.0でネットワークサーバーを作成しています。私は完全なXML要素を受け取ることができるネットワークTCP/IP接続があります。彼らは定期的に到着し、すぐに処理する必要があります。各XML要素はそれ自身で完全なXML文書であるため、開始要素、いくつかのサブノード、および終了要素があります。ストリーム全体に対して単一のルート要素はありません。私は、接続を開いたときに、私は何を取得することは、このようなものです:XMLネットワークストリームから要素全体を読み取る
<status>
<x>123</x>
<y>456</y>
</status>
そして、いくつかの時間後には続行されますように
<status>
<x>234</x>
<y>567</y>
</status>
と。ステータス要素が完成するまで完全なXML文字列を読み取る方法が必要です。私は、データがどのようなフォーマットになっているのかわからないので、プレーンテキストの読み方ではしたくないです。多くの場合、他の場所で説明されているように、ストリーム全体が終了するまで待つことはできません。私はXmlReaderクラスを使用しようとしましたが、ドキュメントが奇妙で、メソッドがうまくいかず、最初の要素が失われ、2つ目の要素を送信した後に2つのルート要素があるためXmlExceptionが発生します。
私は、XmlReaderがルート要素を期待していて、XML要素を連続的にストリーミングするための準備ができていないため、行く方法は不明です。通常、ソケットベースの接続を処理するときは、接続をリッスンし、データの各チャンクの開始と終了を識別します。私はあなたが望んでいないと言ったことを知っていますが、私はあなたが解析できるXMLの塊を少なくとも特定するためにプレーンテキストの読み込みメソッドを使用する必要があると思います。 –
メッセージが完全なノードである場合、各メッセージの新しいリーダーをインスタンス化する必要があります。 –