長時間実行しているアプリケーションから文字列形式のXMLデータを受け取っている小さなプロジェクトに取り組んでいます。この文字列データをXDocument
(System.Xml.Linq.XDocument
)にロードしようとしています。そこからいくつかのXML Magicを実行し、データのレポート用のxlsxファイルを作成します。XML例外:無効な文字
無効なXML文字を含むデータを受け取ることがあり、文字列をXDocument
に解析しようとすると、このエラーが発生します。
[System.Xml.XmlException] メッセージ: '?'、16進値0x1Cは無効な文字です。
私はリモートアプリケーションを制御できないので、どんな種類の文字も期待できます。
XMLには、
などの文字を入力できる方法があることをよく知っています。
可能であれば、私はすべてのデータを保持したいと思います。もしそうでなければ、それを許してください。
私はその後戻って、再解析が例外をスローする必要があるために、私はいくつかの方法を試してみましたし、それらのどれも成功したように見えるんしようとして、プログラム的に応答文字列の編集について考えています。
ありがとうございました。あなたの入力はXMLではない場合、あなたは混乱のアップをきれいに整頓やTagsoupのようなものを使用する必要があり
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
実際には、彼は一度にXMLをすべて文字列として処理しています。 –
@Matthew、ええ、彼が.ReadToEnd()を呼び出す例ですが、.Read()などを使用することもできます。私の推測では、OPはあなたの言ったことをする必要があります。 –
そのリンクは非常に便利でした – Meiscooldude