Я анализирую некоторый XML в C#. Я получаю его от базы данных, и таким образом преобразовывая его в 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>
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();
}
}
Я думал, что это могло быть кодирование, но я попробовал UTF8 и ASCII и ничего не могу найти.
Да, вы должны удалить пробел между и 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.
Ваше сообщение об ошибке довольно явное, у вас есть ошибка на posn 3 в строке 1. Попробуйте Xml
- без пробела .
Удалите первый пробел в документе:
<?xml version="1.0" encoding="utf-8"?>