c# - bytes - El nombre no puede comenzar con el carácter ''''
xml to memorystream c# (8)
Estoy analizando algunos XML en C #. Lo estoy obteniendo de una base de datos, y así lo convierto a un MemoryStream antes de leerlo con un XmlTextReader. El problema es que recibo este error: el Name cannot begin with the '' '' character, hexadecimal value 0x20. Line 1, position 3.
Name cannot begin with the '' '' character, hexadecimal value 0x20. Line 1, position 3.
siguiente es mi XML y mi código para leerlo (está saliendo bien de la base de datos, no hay un primer carácter en blanco). ¿Alguna sugerencia?
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>
DO#:
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();
}
}
Pensé que podría ser la codificación, pero lo he intentado con UTF8 y ASCII y no puedo encontrar nada.
Eliminar el primer espacio en el documento:
<?xml version="1.0" encoding="utf-8"?>
Estaba recibiendo el mismo error al leer un archivo XML.
Resultó que tenía un carácter <errante en mi archivo.
Estaba comentando algunos nodos secundarios y al borrar una de las etiquetas de comentarios, dejé un <extra en el archivo. Apareció el mensaje de error "El nombre no puede comenzar con el carácter ''/ r''" y esta pregunta fue el principal resultado de Google para esa búsqueda exacta.
<node>
<!-- <child /> --><
<child />
<child />
</node>
Mi error en el mismo caso fue que el archivo no se guardó como UTF-8.
Otra fuente común de este error es cuando XmlReader intenta leer sus scripts como xml. Esa es una buena razón para comenzar a comentar los guiones después de las etiquetas de guión. Todavía correrán:
<script language="javascript" type="text/javascript">
<!--
function myFunction() {
}
...
-->
</script>
Sí, debes eliminar el espacio entre <? y 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>
Here está la especificación XML relevante.
Su mensaje de error es bastante explícito, tiene un error en la posición 3 en la línea 1. Pruebe <?xml
- sin espacio.
También debes tener cuidado y evitar expresiones como:
<e order="0" type="custom" name= "test">
El espacio en blanco que sigue al mismo nombre podría hacer que su código se bloquee
Tuve muchos errores debido a esto. Asegúrate de no tener espacios. Hay dos lugares donde quité los espacios que me funcionaron.
Estaba:
xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
Lo que funcionó:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
También había un espacio aquí: <abc: def>. Eliminar todos los espacios alrededor de <y la>.