web-dev-qa-db-ja.com

ルート要素がありません

私はxxx URlからxmlを読み取っていますが、ルート要素が見つからないためエラーが発生しています。

XML応答を読み取るための私のコードは次のとおりです。

  XmlDocument doc = new XmlDocument();
  doc.Load("URL from which i am reading xml");
  XmlNodeList nodes = doc.GetElementsByTagName("Product");
  XmlNode node = null;
  foreach (XmlNode n in nodes)
   {
   }

また、xml応答は次のとおりです。

<All_Products>
   <Product>
  <ProductCode>GFT</ProductCode>
  <ProductName>Gift Certificate</ProductName>
  <ProductDescriptionShort>Give the perfect gift. </ProductDescriptionShort>
  <ProductDescription>Give the perfect gift.</ProductDescription>
  <ProductNameShort>Gift Certificate</ProductNameShort> 
  <FreeShippingItem>Y</FreeShippingItem>
  <ProductPrice>55.0000</ProductPrice>
  <TaxableProduct>Y</TaxableProduct>
   </Product>    
 </All_Products>

どこがおかしいのか教えてください。

14
R.D.

こんにちは、これは奇妙な方法ですが、一度試してみてください

  1. ファイルの内容を文字列に読み取ります
  2. 文字列を出力し、適切なXMLを取得しているかどうかを確認します
  3. XMLDocument.LoadXML(xmlstring)を使用できます

私はあなたのコードと同じXMLで、XML宣言を追加せずに試します

XmlDocument doc = new XmlDocument();
        doc.Load(@"H:\WorkSpace\C#\TestDemos\TestDemos\XMLFile1.xml");
        XmlNodeList nodes = doc.GetElementsByTagName("Product");
        XmlNode node = null;
        foreach (XmlNode n in nodes)
        {
            Console.WriteLine("HI");
        }

完璧に機能する

3
Raghuveer

他の誰かがGoogleからここに到着した場合に備えて、XDocument.Load(Stream)メソッドを使用しているときにこのエラーメッセージに噛まれました。

XDocument xDoc = XDocument.Load(xmlStream);  

ストリームをロードしようとする前に、ストリームの位置が0(ゼロ)に設定されていることを確認してください。

if (xmlStream.Position > 0)
{
    xmlStream.Position = 0;
}
XDocument xDoc = XDocument.Load(xmlStream); 
57
Phil

XMLが次のようになっていることを確認してください。

<?xml version="1.0" encoding="utf-8"?>
<rootElement>
...
</rootElement>

また、空のXMLファイルは、同じルート要素が見つからないという例外を返します。各XMLファイルには、他のすべての要素を囲むルート要素/ノードが必要です。

11
coder

XMLファイルをリモートの場所からロードする場合、 Fiddler のようなスニファーを使用して、ファイルが実際に正しくダウンロードされているかどうかを確認します。

コードを実行してファイルを解析するクイックコンソールアプリを作成しましたが、うまく機能します。

3
Tom Hazel
  1. Configフォルダにあるtrees.configファイルを確認してください...時々(私は理由がわかりません)誰かが内部のコンテンツを削除するようにこのファイルが空になった...ローカルPCにこのファイルのバックアップを保管してくださいこのエラーが表示されます-サーバーファイルをローカルファイルに置き換えます。これは、このエラーが発生したときに行うことです。

  2. サーバーの使用可能なスペースを確認してください。時々これが問題です。

幸運を。

1
Idoshhh