Le nom ne peut pas commencer par le caractère ''

J'analyse du XML en C#. Je l'obtiens à partir d'une base de données, et donc le convertir en un MemoryStream avant de le lire avec un XmlTextReader. Le problème est que je reçois cette erreur: Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3. Voici mon XML et mon code pour le lire (il sort de la base de données, pas de premier caractère vide). Toutes les suggestions?

XML:

<? xml version="1.0" encoding="utf-8" ?>
<form>
   <e order="0" type="custom" name="test">
      <fi type="text" />
      <o />
   </e>
   <e order="1" type="zip" />
   <e order="2" type="state" />
</form>

C#:

byte[] byteArray = new byte[formXml.Length];
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byteArray = encoding.GetBytes(formXml);
MemoryStream xmlStream = new MemoryStream(byteArray);

XmlTextReader xmlReader = new XmlTextReader(xmlStream);
while (xmlReader.Read())
{
    if (xmlReader.HasValue)
    {
        returnString += xmlReader.Depth.ToString();
    }
}

Je pensais que ce pourrait être l'encodage, mais j'ai essayé par UTF8 et ASCII et je ne trouve rien.

25
demandé sur Brian Hicks 2010-02-17 19:35:45

8 réponses

Oui, vous devez supprimer l'espace entre et xml.

<?xml version="1.0" encoding="utf-8" ?>
<form>
   <e order="0" type="custom" name="test">
      <fi type="text" />
      <o />
   </e>
   <e order="1" type="zip" />
   <e order="2" type="state" />
</form>

Voici la spécification XML pertinente.

24
répondu Otávio Décio 2010-02-17 16:37:11

Une autre source commune de cette erreur est lorsque le XmlReader tente de lire vos scripts en xml. C'est une bonne raison de commencer à commenter les scripts après les balises de script. Ils vont toujours courir:

<script language="javascript" type="text/javascript">
<!--
    function myFunction() {
    }
    ...
-->
</script>
7
répondu CZahrobsky 2011-03-31 19:23:42

Votre message d'erreur est assez explicite, vous avez une erreur au posn 3 à la ligne 1. Essayez <?xml -- pas d'espace.

5
répondu High Performance Mark 2010-02-17 16:38:52

Supprimer le premier espace du document:

<?xml version="1.0" encoding="utf-8"?>
3
répondu SLaks 2010-02-17 16:37:32

Mon erreur dans le même cas était que le fichier N'a pas été enregistré en UTF-8.

3
répondu Migol 2016-05-10 07:11:00

Je recevais la même erreur en lisant un fichier XML.

Il S'est avéré que j'avais un caractère errant

Je commentais certains nœuds enfants et en effaçant l'une des balises de commentaire, j'ai laissé un

<node>
    <!-- <child /> --><
    <child />
    <child />
</node>
0
répondu Keith Sirmons 2014-03-26 22:36:56

J'ai eu beaucoup d'erreurs à cause de cela. Assurez-vous que vous n'avez pas d'espaces. Il y a deux endroits où j'ai enlevé des espaces qui ont fonctionné pour moi.

Était:

xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"

Ce qui a fonctionné:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Il y avait un espace ici aussi: . Supprimez tous les espaces autour du .

0
répondu raleign 2015-08-14 21:56:59

Vous devriez également être prudent et éviter les expressions comme:

<e order="0" type="custom" name= "test">

L'espace vide qui suit l'égal du nom pourrait faire planter votre code

0
répondu Manuel Roldan 2018-06-25 13:39:30