2015-04-07 4 views
0

Je voudrais charger un fichier XML avec un chemin absolu. Je l'ai essayé de faire ceci:Charger un fichier XML avec XmlDocument

XmlDocument doc = new XmlDocument(); 
doc.Load(@"C:\Users\Accueil\Desktop\TestEDI\ARTest.xml"); 

Mais j'obtiens l'erreur:

the character '<', hexadecimal value 0x3c, cannot be included in a name.

+10

Pouvez-vous montrer le contenu de votre dossier? Il semble que votre fichier XML ne soit pas valide. –

+0

Le nom du message d'erreur n'est probablement pas le nom du fichier mais un nom d'élément mal formé dans le fichier XML –

+0

Erreur probablement provenir du contenu du fichier mais comme je ne peux pas changer le contenu, j'ai décidé de ne pas utiliser XmlDocument pour lire et analyser mon fichier XML. – Stan

Répondre

0

Essayez ceci:

XmlReader xmlFile; 
FileStream fs = new FileStream("/*YOUR XML FILE PATH*/.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); // Creates a FileStream that will open a specific .xml file you want, read it and then write its data into your program 
xmlFile = XmlReader.Create(fs, new XmlReaderSettings()); // Enables your program to use this newly "created" .xml file 

DataSet ds = new DataSet(); 
ds.ReadXml(xmlFile); // Uses your .xml file as a DataSet, which can then be used as a data source for something you need (e.g.: a DataGridView) 
+0

PS: lors du codage en dur d'un chemin de fichier, vous devriez toujours utiliser \\ au lieu de \, votre chemin serait donc "C: \\ Utilisateurs \\ Accueil \\ Bureau \\ TestEDI \\ ARTest.xml" – AlanC92

+1

cas particulier OP a échappé aux barres obliques en utilisant le préfixe '@' - il n'est donc pas nécessaire d'utiliser des doubles barres obliques. –

1

Vous obtiendrez cette erreur si vous avez une utilisation de < autre que comme la balise ouverte d'un élément xml.

  1. Par exemple, <my<Element> pourrait vous donner cette erreur, parce que l'analyseur trouve la deuxième < alors qu'il attend soit une partie du nom de balise pour myElement ou la balise de fermeture >.

  2. Un autre exemple serait que vous vouliez utiliser < dans le corps de texte xml:

    <inequality> Voici un exemple d'une inégalité: x

La façon de éviter ceci est de s'assurer que toutes les utilisations non-ouverture de l'étiquette de «<» sont codés comme proper XML entities, dans ce cas, ce serait &lt;

1

Comme Andy a dit, il semble que si vous utilisez des caractères restreints dans votre fichier xml ...

Taken from here ...

Cela donne un message d'erreur:

<message>if salary < 1000 then</message> 

Ceci est bien:

<message>if salary &lt; 1000 then</message> 

Il y a 5 références d'entités prédéfinies en XML:

&lt; < less than 
&gt; > greater than 
&amp; & ampersand 
&apos; ' apostrophe 
&quot; " quotation mark 

Remarque: Seuls les caractères "<" et "&" sont strictement illégaux en XML. Le plus grand que le personnage est légal, mais c'est une bonne habitude de le remplacer.

remplacer donc ces caractères illégaux ou envisager d'utiliser CData