XmlDocument.LoadXml
の使用中に問題が発生しました。
アプリケーションがクラッシュし、次のエラーが発生しました:
「ルートレベルのデータは無効です。行1、位置1」
XMLを検査して問題がないことを確認した後、少しグーグル検索して、XmlDocument.Load
ではなくXmlDocument.LoadXml
を使用するためのヒントを見つけました。
私はそれを試しました、そしてそれは完全に働きます。
私の質問は次のとおりです。2つの方法の違いは何ですか。一方が機能し、もう一方が失敗する原因は何ですか。
XmlDocument.Load は、ストリーム、TextReader、パス/ URL、またはXmlReaderからXMLをロードするために使用されます。 XmlDocument.LoadXml は、文字列に含まれるXMLをロードするために使用されます。
それらは、XMLが実際に格納される場所に応じて、XMLをロードする基本的に異なる方法です。したがって、XMLの場所に間違った方法を使用していたようです。
XmlDocument.LoadXml
を使用してファイルの名前を渡そうとしていましたか?それはそれをしません-あなたが渡す文字列がis XMLであると仮定します。だからあなたは使うかもしれません:
doc.LoadXml("<root><child /><root>");
または
doc.Load("myfile.xml");
それでも問題が解決しない場合は、失敗して機能しているコードを表示できますか? LoadXml
をLoad
に変更する方法はいくつかあります...
あなたの使用を前提としていますXmlDocument.Load
およびXmlDocument.LoadXml
rightの方法で、この問題は Byte Order Mark が原因である可能性があります。
これは その他の質問 が役に立つかもしれません。
Load()は特定のソースからロードしますが、LoadXml()は文字列から直接ロードします
アプリケーションは次のエラーでクラッシュしました:「ルートレベルのデータは無効です。行1、位置1」XMLデータにルートレベルがないと思われます:例:
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
最下位レベルの上に少なくとも1つのルートレベルが必要です。例えば:
<areas>
<area id="1">
<candidate id="0">dataata</candidate>
</area>
<area id="2">
<candidate id="0">dataataa</candidate>
</area>
</areas>
レベルの一番上に1人の母親を置き、それをすべての子供たちの壮大な祖母にしてください