Имя не может начинаться с символа ''
Я разбираю 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 и ничего не могу найти.
Ответы
Ответ 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 > . Удалите все пробелы вокруг < и > .