Подтвердить что ты не робот

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

Я разбираю 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 />
   </e>
   <e order="1" type="zip" />
   <e order="2" type="state" />
</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 и ничего не могу найти.

4b9b3361

Ответ 1

Да, вы должны удалить пробел между <? и 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>

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

Ответ 2

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

<script language="javascript" type="text/javascript">
<!--
    function myFunction() {
    }
    ...
-->
</script>

Ответ 3

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

Ответ 4

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

<?xml version="1.0" encoding="utf-8"?>

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

Был:

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

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

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

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