XMLの読み取りで問題が発生しました。解決策は見つかりましたが、まだいくつかの質問があります。不正なXMLファイルはUTF-8でエンコードされており、ヘッダーに適切なマークが付いています。ただし、UTF-16でエンコードされた文字も含まれています-'é'。このコードは、コンテンツを検証するためにXMLファイルを読み取るために使用されました。
var xDoc = XDocument.Load(taxFile);
指定された誤ったXMLファイルに対して例外が発生します:「指定されたエンコーディングの無効な文字。59行目、104行目」。簡単な修正は次のとおりです。
XDocument xDoc = null;
using (var oReader = new StreamReader(taxFile, Encoding.UTF8))
{
xDoc = XDocument.Load(oReader);
}
このコードは、誤ったファイルに対して例外を発生させません。ただし、「é」文字は�としてロードされます。私の最初の質問は「なぜそれが機能するのか」です。
もう1つのポイントは、XmlReaderを使用しても、「é」が付いたノードがロードされるまで例外が発生しないことです。
XmlReader xmlTax = XmlReader.Create(filePath);
また、StreamReaderを使用したトレーニングが役立ちます。同じ質問。修正ソリューションが十分ではないようです。ある日原因となります:)別の形式でエンコードされたXMLが表示され、間違った方法で処理される可能性があります。しかし、UTF-16形式のXMLファイルを処理しようとしましたが、正常に機能しました(UTF-8に構成されています)。
最後の質問は、XDocument/XmlReaderがこのような文字エンコードまたはsmthを無視するために提供されるオプションがあるかどうかです。
返信をお待ちしております。前もって感謝します