Вопрос по xml, xmltextreader, memorystream, c# – Имя не может начинаться с символа ''

27

Я разбираю некоторые 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 и не могу ничего найти.

Это не позволяет специального символа .. Rohidas Kadam
Кстати, если вы все еще используете .NET 1.1, вы должны использоватьXmlReader.Create() вместоnew XmlTextReader(). John Saunders

Ваш Ответ

8   ответов
0

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

Было:

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

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

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

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

3

Удалить первый пробел в документе:

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

? и 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.

И сообщение об ошибке (на этот раз) полностью указывает на место проблемы. AakashM
6

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

3

что файл не был сохранен как UTF-8.

7

ается прочитать ваши сценарии как xml. Это хорошая причина начать комментировать сценарии после тегов сценария. Они все еще будут бежать

<script language="javascript" type="text/javascript">
<!--
    function myFunction() {
    }
    ...
-->
</script>
Я хотел бы знать это 2 дня назад - спасибо! Julian
0

Оказалось, что в моем файле был ошибочный символ <.

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

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

Вы также должны быть осторожны и избегать таких выражений, как:

<e order="0" type="custom" name= "test">

Пробел, следующий за именем, может привести к сбою кода

Похожие вопросы