web-dev-qa-db-fra.com

L'élément racine est manquant

Je lis xml de xxx URl mais j'obtiens une erreur car un élément racine est manquant.

Mon code pour lire la réponse XML est le suivant:

  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)
   {
   }

et la réponse XML est la suivante:

<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>

Pouvez-vous s'il vous plaît dire où je vais mal.

13
R.D.

Bonjour c'est curieux mais essayez une fois

  1. Lire le contenu du fichier dans une chaîne
  2. imprimer la chaîne et vérifier si vous obtenez le bon XML ou non 
  3. vous pouvez utiliser XMLDocument.LoadXML(xmlstring)

J'essaie avec votre code et le même XML sans ajouter de déclaration XML, cela fonctionne pour moi

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");
        }

Cela fonctionne parfaitement bien

2
Raghuveer

Juste au cas où quelqu'un d'autre arriverait ici de Google, j'ai été piqué par ce message d'erreur lors de l'utilisation de la méthode XDocument.Load (Stream).

XDocument xDoc = XDocument.Load(xmlStream);  

Assurez-vous que la position du flux est définie sur 0 (zéro) avant d'essayer de charger le flux. C'est une erreur facile que je néglige toujours!

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

Assurez-vous que XML ressemble à ceci:

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

En outre, un fichier XML vierge renverra les mêmes exceptions racine pour les éléments racine. Chaque fichier XML doit avoir un élément racine/noeud qui englobe tous les autres éléments.

10
coder

Si vous chargez le fichier XML depuis un emplacement distant, je vérifierai si le fichier est effectivement téléchargé correctement à l'aide d'un renifleur tel que Fiddler .

J'ai écrit une application de console rapide pour exécuter votre code et analyser le fichier et cela fonctionne très bien pour moi. 

2
Tom Hazel
  1. Vérifiez le fichier trees.config qui se trouve dans le dossier de configuration ... Parfois (je ne sais pas pourquoi), ce fichier est devenu vide, comme si quelqu'un supprimait le contenu de ... Conserve une sauvegarde de ce fichier puis, lorsque cette erreur apparaît, dans votre ordinateur local, remplacez le fichier du serveur par votre fichier local. C'est ce que je fais quand cette erreur s'est produite.

  2. vérifiez l'espace disponible sur le serveur. parfois c'est le problème.

Bonne chance.

0
Idoshhh