Xml.LoadData による WiX インストーラーでの XML の解析問題
WiX インストーラー内で XML を解析しようとすると、エラー「Data at theルート レベルが無効です。行 1、位置 1」が見つかりました。基になる XML には、以下に示す有効な構造が含まれています。
<?xml version="1.0" encoding="utf-8"?> <Errors></Errors>
問題は非表示文字に起因します。 、おそらく BOM (バイト オーダー マーク) で、XML の先頭に表示されます。この文字はテキスト エディターには表示されませんが、XML 解析を中断する可能性があります。
これを解決するには、 BOM 文字をチェックし、必要に応じて削除するコード スニペットpresent:
string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); if (xml.StartsWith(_byteOrderMarkUtf8)) { xml = xml.Remove(0, _byteOrderMarkUtf8.Length); }
別のユーザーが提案した代替アプローチは、最初の行全体を削除することです。上記よりも精度が低くなります
結論
XML から目に見えない BOM 文字を削除すると、解析エラーが解決され、XML が正常に解析され、その内容が処理されるようになります。
以上がWiX インストーラーで XML を解析する際の「ルート レベルのデータが無効です」エラーを解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。