2009-11-02 8 views
16

私はちょうどXmlDocument.LoadXmlを使用して問題を見つけました。XmlDocument.Load対XmlDocument.LoadXml

アプリケーションは以下のエラーを与えて、クラッシュしていました:

"Data at the root level is invalid. Line 1, position 1"

XMLを検査し、それと間違って何も見つけなかった後、私は少しグーグル、代わりにXmlDocument.LoadXmlXmlDocument.Loadを使用するためのヒントを見つけました。

私はそれを試して、それは完全に動作します。

私の質問は:2つの方法の違いと、1つは動作し、もう1つは失敗する原因は何ですか?

答えて

32

XmlDocument.Loadは、ストリーム、TextReader、パス/ URL、またはXmlReaderからXMLを読み込むために使用されます。 XmlDocument.LoadXmlは、文字列に含まれるXMLを読み込むために使用されます。

これらは、XMLが実際に格納されている場所によって、XMLを読み込む根本的に異なる方法です。だからあなたのXMLがどこにあるのか間違った方法を使っていたようです。

20

XmlDocument.LoadXmlを使用してファイル名を渡してみましたか?それはしません - それはに渡す文字列が XMLであることを前提としています。だから、使用する可能性があります:

doc.LoadXml("<root><child /><root>"); 

または

doc.Load("myfile.xml"); 

をそれが解決しない場合は、あなたが失敗し、作業コードを示すことができましたか?あなたがXmlDocument.LoadXmlDocument.LoadXmlを使用して、と仮定すると、文字列から直接LoadXml()の負荷に対し、特定のソースからLoadXmlLoadへ...

+0

してください。私はまた、文書型定義ファイルを含むxmlファイルを持っています。 <!DOCTYPE SoccerMatchPlus SYSTEM "SoccerMatchPlus.dtd"> xmlファイルが存在するSoccerMatchPlus.dtdを配置しました。ファイル 'C:\ Windows \ system32 \ SoccerMatchPlus.dtd'が見つかりませんでしたのようなdoc.LoadXmlメソッドを使用するとエラーが発生しました。なぜdoc.LoadXmlメソッドが 'C:\ Windows \ system32'フォルダ内のファイルを見つけるのですか?実行時にパスを変更することはできますか? –

+0

@Rais:あなたは新しい質問を始めたいと思うかもしれませんね。 –

+0

ok私は自分の質問を投稿します、あなたは正しいと思います。ありがとう。 –

2

ロード()の負荷を使用してから

3

を変更している可能性があり、さまざまな方法があります。 方法この問題は、Byte Order Markによって引き起こされる可能性があります。

このother questionが便利です。

+0

はい、これです。私は、XmlDocumentを読み込む前に 'byte []'を 'string'に変換してはいけないということを発見しました。これが正確な理由でした。私はBOMを取得していました。代わりに 'byte []'を 'MemoryStream'にロードしました。 –

0

アプリケーションは次のエラーでクラッシュしていました:「ルートレベルのデータが無効であるライン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枚のマザーを入れて、私はdoc.LoadXmlメソッドを使用していますすべての子供たちのそれは壮大な壮大な母親

+0

行1、位置1はドキュメントの開始点です。構造的な妥当性と、まだ文書レベルの要素を探すことはまだ始まっていません。 –

関連する問題