Имя не может начинаться с символа ''

Я разбираю XML в С#. Я получаю его из базы данных и поэтому конвертирую его в MemoryStream, прежде чем читать его с помощью XmlTextReader. Проблема в том, что я получаю эту ошибку: Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3. Ниже приведен мой XML и мой код для его чтения (он выходит из базы данных в порядке, без пустого первого символа). Любые предложения?

XML:

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

С#:

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();
 }
}

Я думал, что это может быть кодировка, но я пробовал UTF8 и ASCII и ничего не могу найти.

7 ответов

Да, вы должны удалить пробел между

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

Здесь соответствующая спецификация XML.


Другим распространенным источником этой ошибки является то, что XmlReader пытается прочитать ваши скрипты как xml. Это хорошая причина начать комментирование скриптов после тегов script. Они все равно будут работать:


Ваше сообщение об ошибке довольно явное, у вас есть ошибка в posn 3 в строке 1. Попробуйте <!--?xml</code--> - нет места.


Удалите первое место в документе:


Моя ошибка в том же случае заключалась в том, что файл не был сохранен как UTF-8.


Я получал ту же ошибку, читающую XML файл.

Оказалось, что у меня был странствующий < в моем файле.

Я комментировал определенные дочерние узлы, и, стирая один из тегов комментариев, я оставил дополнительный < в файле. Появилось сообщение об ошибке "Имя не может начинаться с символа" \r ", и этот вопрос был лучшим результатом Google для этого точного поиска.

<node>
                <!-- <child /> -->
                < <child>
                    </child>
            </node>


Из-за этого у меня было много ошибок. Убедитесь, что у вас нет пробелов. Есть два места, где я удалял пробелы, которые работали для меня.

Был:

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

Что работало:

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

Здесь также было место: < abc: def> . Удалите все пробелы вокруг < и> .

licensed under cc by-sa 3.0 with attribution.