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.
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.
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>
Votre message d'erreur est assez explicite, vous avez une erreur au posn 3 à la ligne 1. Essayez <?xml
-- pas d'espace.
Supprimer le premier espace du document:
<?xml version="1.0" encoding="utf-8"?>
Mon erreur dans le même cas était que le fichier N'a pas été enregistré en UTF-8.
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>
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 .
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