2010-02-17 90 views
23

我正在解析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> 

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尝试,并不能找到任何东西。

+1

顺便说一句,除非你仍然使用.NET 1.1,你应该使用'XmlReader.Create()'而不是'new XmlTextReader()'。 – 2010-02-17 16:42:13

+0

它不允许特殊字符。 – 2015-09-21 14:32:36

回答

22

是的,你应该删除<之间的空间?和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> 

Here的相关XML规范。

+5

错误消息是(一次)完全发现有关问题的位置。 – AakashM 2010-02-17 16:39:18

3

文档中删除第一个空间:

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

你的错误信息是非常明确,你必须在posn处3第1行中的错误尝试<?xml - 没有空间。

7

此错误的另一个常见原因是XmlReader尝试将脚本读为xml。这是在脚本标记之后开始评论脚本的好理由。他们仍然会运行:

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

我希望我2天前知道这一点 - 谢谢! – Julian 2014-05-21 14:00:22

0

我正在读取XML文件时出现同样的错误。

原来我在我的文件中有一个错误的<字符。

我在评论某些子节点,当删除其中一个评论标签时,我在文件中留下了额外的<。该错误消息回来了“名称不能以'\ r'字符开头”,这个问题是谷歌搜索结果的顶部。

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

因为这个,我有很多错误。确保你没有空间。有两个地方我删除了为我工作的空间。

那句话:

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

什么工作:

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

有一个空间,在这里太:< ABC:DEF>。去除<和>中的所有空格。

1

我的错误在同一个案例中是该文件没有保存为UTF-8。

相关问题