2016-07-15 8 views
0

Je reçois une erreur concernant un format incorrect lors du chargement d'un document xml dans C#. Lorsque vous utilisez le code suivant,Comportement étrange lors du chargement de xml via XmlDocument

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(fileName); 

Je reçois l'erreur après:

données au niveau de la racine est invalide. Ligne 1, 1.

Cependant, si je change la première occurrence à ce qui suit, tout fonctionne comme prévu et le type de xmlDoc est en fait XmlDocument:

var xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(fileName); 

Un extrait de mon xml est le fichier est ci-dessous:

<?xml version="1.0" encoding="utf-8"?> 
<AutomatedTests type="asdf"> 
    <TestGroup> 
    </TestGroup> 
</AutomatedTests> 

Y at-il une explication de pourquoi cela pourrait se produire?

+0

Est-ce que votre xml manque vraiment un ">" de fermeture, ou avez-vous juste mal copié? :) – DVarga

+0

Ah bonne prise. Je me suis trompé! – Hondros

+0

[XmlDocument.LoadXml, méthode (chaîne)] (https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.loadxml (v = vs.110) .aspx) - Charge le document XML à partir de la chaîne spécifiée. while [Méthode XmlDocument.Load] (https://msdn.microsoft.com/fr-fr/library/system.xml.xmldocument.load (v = vs.110) .aspx) - Charge les données XML spécifiées à partir d'un Stream, une URL, un TextReader ou un XmlReader. – Nkosi

Répondre

2

En supposant que le nom de fichier est le chemin, essayez le code ci-dessous.

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(fileName); 

charge XmlDocument.Load XML soit à partir d'un flux, TextReader, chemin/URL ou XmlReader et XmlDocument.LoadXml charge le XML contenu dans une chaîne.

+0

C'est le code exact que j'ai dans le premier extrait ci-dessus. Il renvoie l'erreur "Les données au niveau de la racine sont invalides Ligne 1, position 1" – Hondros

+0

@Hondros vous avez 'LoadXml' dans les deux extraits – Nkosi

+0

Je ne peux pas croire que j'ai manqué cela. Par coïncidence, c'est le même appel que j'utilise dans une fonction différente de quelques lignes plus haut que dans mon code. Merci pour cette prise, tout fonctionne correctement maintenant! – Hondros