ネットワーク ソケット経由で XML を受信しています。その XML を取得して DOM にロードし、さらに操作を実行する必要があります。MSXML では、UCS-2 または UTF-16 のいずれかの入力文字列が必要であり、文字列からロードするときにエンコーディング タイプの XML ヘッダーを完全に無視します。これは XML フラグメントのロードを許可するので、これはある程度理にかなっています。
この問題を処理するには、次の 2 つの方法が考えられます。
1) ファイルをディスクに書き出し、ファイル パス経由で MSXML に読み込みます。余分なディスク I/O があるため、この方法はあまり好ましいものではありません。
2) XML ヘッダーに到達してエンコーディングを手動で検出し、MultiByteToWideChar を呼び出して UTF-16 に変換し、検出されたエンコーディングに基づいてコード ページを指定します。このアプローチは問題なく機能しますが、エンコーディング検出を MSXML にプッシュしたいと思います。
これを達成する方法について他にアイデアはありますか?
私は他の XML パーサーを調べたことはありませんが、MSXML 以外の DOM パーサーがこれをどのように実現するかに興味があります。
ありがとう、ポール