我正在使用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,但找不到任何东西。
答案 0 :(得分:29)
是的,您应该删除&lt ;?之间的空格和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规范。
答案 1 :(得分:7)
此错误的另一个常见原因是XmlReader尝试将您的脚本读取为xml。这是在脚本标记之后开始注释脚本的一个很好的理由。它们仍会运行:
<script language="javascript" type="text/javascript">
<!--
function myFunction() {
}
...
-->
</script>
答案 2 :(得分:6)
您的错误消息非常明确,您在第1行的第3位发生错误。请尝试<?xml
- 没有空格。
答案 3 :(得分:3)
删除文档中的第一个空格:
<?xml version="1.0" encoding="utf-8"?>
答案 4 :(得分:3)
在同样的情况下我的错误是文件没有保存为UTF-8。
答案 5 :(得分:1)
您还应该小心,避免使用类似以下的表达式:
<e order="0" type="custom" name= "test">
名称后面的空格可能会使您的代码崩溃
答案 6 :(得分:0)
我在读取XML文件时遇到同样的错误。
原来我有一个错误&lt;我文件中的字符。
我正在评论某些子节点,当删除其中一个评论标签时,我留下了额外的&lt;在文件中。错误消息返回&#34;名称不能以&#39; \ r&#39;字符&#34;这个问题是该搜索的最佳谷歌搜索结果。
<node>
<!-- <child /> --><
<child />
<child />
</node>
答案 7 :(得分:0)
因此我犯了很多错误。确保没有空格。有两个地方我删除了适合我的空间。
当时:
mysql --user=MYUSERNAME --password=MYPASSWORD --database=MYDATABASE --execute="LOAD DATA LOCAL INFILE \"/home/MYFILE.csv\" INTO MYDATABASE.MYTABLE FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 2 LINES“
什么有效:
xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
这里也有一个空间:&lt; abc:def&gt;。删除&lt;周围的所有空格。和&gt;。
答案 8 :(得分:0)
如果在SSIS中,只需转到解决方案资源管理器,选择项目,然后从“生成”菜单选项中选择“重新生成解决方案”。