名称不能以''字符开头

Bri*_*cks 34 c# xml memorystream xmltextreader

我在C#中解析一些XML.我从数据库中获取它,因此在使用XmlTextReader读取它之前将其转换为MemoryStream.问题是我得到了这个错误: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>
Run Code Online (Sandbox Code Playgroud)

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为它可能是编码,但我尝试过UTF8和ASCII,但找不到任何东西.

Otá*_*cio 33

是的,你应该删除<?之间的空格 和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>
Run Code Online (Sandbox Code Playgroud)

是相关的XML规范.

  • 并且错误消息(一次)完全发现问题的位置. (5认同)

CZa*_*sky 7

此错误的另一个常见原因是XmlReader尝试将脚本读取为xml时.这是在脚本标记之后开始注释脚本的一个很好的理由.他们仍将运行:

<script language="javascript" type="text/javascript">
<!--
    function myFunction() {
    }
    ...
-->
</script>
Run Code Online (Sandbox Code Playgroud)


Hig*_*ark 6

您的错误消息非常明确,您在第1行的第3行有错误.请尝试<?xml- 没有空格.


SLa*_*aks 5

删除文档中的第一个空格:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)