XDocumentメソッドを使用してxmlドキュメントを読み取ろうとしています。しかし、XMLが持っているときにエラーが発生しています
<?xml version="1.0" encoding="utf-16"?>
エンコードを手動で削除すると、完全に機能します。
エラーが発生しています。「Unicodeバイトオーダーマークがありません。Unicodeに切り替えることはできません。」
検索してみましたが、ここに着きました->
XMLヘッダーが含まれているときにC#XmlDocument.LoadXml(string)が失敗するのはなぜですか?
しかし、私の問題を解決できませんでした。
私のコード:
XDocument xdoc = XDocument.Load(path);
助言がありますか ??
ありがとうございました。
読み取ろうとしているファイルはUnicodeとしてエンコードされていないようです。 utf-16
として指定されたXMLファイルのエンコードでANSIとしてエンコードされたファイルを開こうとすると、動作を複製できます。
ファイルが適切にエンコードされていることを確認できない場合は、ファイルをストリームに読み込んで(StreamReader
にエンコードを検出させる)、XDocument
を作成できます。
using (StreamReader sr = new StreamReader(path, true))
{
XDocument xdoc = XDocument.Load(sr);
}
私は試しましたが、別の方法を見つけました!!
XDocument xdoc = XDocument.Parse(System.IO.File.ReadAllLines(path));
このコード:
System.IO.File.ReadAllLines(path)
文字列の配列を返します。正しいコードは次のとおりです。
System.IO.File.ReadAllText(path)