TCPを介してXMLを私にストリームするサードパーティ製のシステムがあるとします。 TOTAL送信XMLコンテンツ(ない1つのストリームのメッセージが、連結されたメッセージ)は、次のようになります。.NET3.5で不正な形式のXMLを処理しています
<root>
<insert ....><remark>...</remark></insert>
<delete ....><remark>...</remark></delete>
<insert ....><remark>...</remark></insert>
....
<insert ....><remark>...</remark></insert>
</root>
上記のサンプルの各行が個別に処理可能です。それはストリーミングプロセスなので、すべてが到着するまで待つだけのことはできません。私はコンテンツを処理する必要があります。問題は、任意の点でコンテンツチャンクをスライスすることができ、タグが尊重されないことです。 コンテンツがこのような断片で到着した場合、コンテンツの処理方法に関する良いアドバイスはありますか?
チャンク1:
<root>
<insert ....><rem
チャンク2:
ark>...</remark></insert>
<delete ....><remark>...</remark></delete>
<insert ....><remark>...</rema
チャンクN:
rk></insert>
....
<insert ....><remark>...</remark></insert>
</root>
EDIT:
処理速度は問題ではありません(リアルタイムのトラブルはありません)。メッセージ全体を待つことはできません。実際には最後のチャンクは到着しません。サードパーティシステムは、変更が発生するたびにメッセージを送信します。プロセスは決して終わらず、決して停止しないストリームです。
リアルタイムで処理する必要がありますか、完全なコンテンツを取得するまで待つことはできますか?言い換えれば、XMLフラグメントを処理したり、ストリームからのデータを最もエレガントで効率的な方法で結合することに関するこの問題はありますか? – daveaglick
私はあなたが 'XmlReader'クラスを使用することができますブロッキングの読み取りを使用できると思う。ノンブロッキングIOでどのように処理するかは考えられません。 – CodesInChaos
あなたは、チャンクを受け取ったときに処理可能な部分を取り出し、処理することができます(できるだけあれば、非同期は良いでしょう)し、次にチャンクを追加するような文字列操作を使用する必要があるように聞こえます左、そしてそのようなループラウンド。 –