C# 名称不能以 ' ' 字符开头

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2282467/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-07 01:02:20  来源:igfitidea点击:

Name cannot begin with the ' ' character

c#xmlmemorystreamxmltextreader

提问by Brian Hicks

I'm parsing some XML in C#. I'm getting it from a database, and so converting it to a MemoryStream before reading it with an XmlTextReader. The problem is that I get this error: Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3.Following is my XML and my code for reading it (it's coming out of the database alright, no blank first character). Any suggestions?

我正在用 C# 解析一些 XML。我从数据库中获取它,因此在使用 XmlTextReader 读取它之前将其转换为 MemoryStream。问题是我收到了这个错误:Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3.以下是我的 XML 和我读取它的代码(它来自数据库,没有空白的第一个字符)。有什么建议?

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#:

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();
    }
}

I thought it could be the encoding, but I've tried by UTF8 and ASCII and can't find anything.

我认为这可能是编码,但我已经尝试过 UTF8 和 ASCII 并且找不到任何东西。

采纳答案by Otávio Décio

Yes, you should delete the space between <? and 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>

Here's the relevant XML spec.

是相关的 XML 规范。

回答by SLaks

Remove the first space in the document:

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

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

回答by High Performance Mark

Your error message is quite explicit, you have an error at posn 3 in line 1. Try <?xml-- no space.

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

回答by CZahrobsky

Another common source of this error is when the XmlReader attempts to read your scripts as xml. That's a good reason to start commenting out scripts after the script tags. They will still run:

此错误的另一个常见来源是当 XmlReader 尝试将您的脚本读取为 xml 时。这是在脚本标签之后开始注释掉脚本的一个很好的理由。他们仍然会运行:

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

回答by Keith Sirmons

I was getting the same error reading an XML file.

我在读取 XML 文件时遇到了同样的错误。

It turned out I had an errant < character in my file.

结果我的文件中有一个错误的 < 字符。

I was commenting out certain child nodes and when erasing one of the comment tags, I left an extra < in the file. The error message came back "Name cannot begin with the '\r' character" and this question was the top google result for that exact search.

我正在注释掉某些子节点,并且在删除其中一个注释标签时,我在文件中留下了一个额外的 <。错误消息返回“名称不能以 '\r' 字符开头”,这个问题是该确切搜索的顶级谷歌结果。

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

回答by raleign

I had a lot of errors because of this. Make sure you don't have spaces. There are two places I removed spaces that worked for me.

因为这个,我犯了很多错误。确保您没有空格。我删除了两个对我有用的空间。

Was:

曾是:

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

What worked:

什么工作:

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

There was a space here too: < abc:def >. Remove all the spaces around the < and the >.

这里也有一个空格:< abc:def >。删除 < 和 > 周围的所有空格。

回答by Migol

My error in same case was that file wasn't saved as UTF-8.

我在同一情况下的错误是该文件没有保存为 UTF-8。

回答by Manuel Roldan

You also should be carefull and avoid expressions like:

您还应该小心并避免使用以下表达式:

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

The blank space that follows the name's equal could make your code crash

名称相等后的空格可能会使您的代码崩溃