2010-02-17 140 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。