2013-01-25 114 views
1

在我的c#應用程序中,我正在根據數據庫值創建一個xml。它很好,直到字符串不是特殊字符。以下是我的代碼。帶有特殊字符的XmlElement

XmlDocument doc = new XmlDocument(); 
XmlElement element = doc.CreateElement("NewDataSet"); 
    ------ 
string itemname =System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["itemname"].ToString()); 
fieldElement = doc.CreateElement(itemname); 
fieldElement.InnerText = ds.Tables[0].Rows[j]["count"].ToString(); 
fieldElement1.AppendChild(fieldElement); 

我在`fieldElement = doc.CreateElement(itemname); 作爲''字符,十六進制值0x20,不能包含在名稱中。 而拋出異常的字符串是「Adam & Evafrisør」。

誰能告訴我如何解決這個問題。

+0

'&'和''(空格)將不會對xml元素有效 – V4Vendetta

回答

0

這裏有兩個可能的問題。首先,你是HTML編碼的元素名稱。這將正常工作,直到元素名稱包含特殊字符。

元素標籤區分大小寫;開始和結束標籤必須與 完全匹配。 「#$%&'()* +,/; < =>?@ [] ^`{|}〜,也不是空格字符,並且不能使用 - ,。開始 。 ,或者數字位數。

所以,這是一個等待發生的錯誤。確保名稱是有效的,並且不包含任何特殊字符。

其次,你是不是逃避的內容您引用的文本包含非轉義的&。這導致了您正在獲得的實際錯誤。使用您用於元素文本的元素名稱的相同轉義方法。

fieldElement.InnerText = System.Web.HttpUtility.HtmlEncode(ds.Tables[0].Rows[j]["count"].ToString()); 
fieldElement1.AppendChild(fieldElement); 
+0

我收到itemname =「Adam&Evafrisør」..此字符串必須創建爲xmlelemnt.here,我收到錯誤。 – user642378

+1

您的問題可能是我描述的第一個項目。您在'itemname'中使用無效字符。你不能有空格或'&'。不確定特殊字符「ø」,但它是一個Unicode字符,應該是可以接受的。替換或刪除項目名稱中的特殊字符,或重新制作xml,以使該值爲節點的屬性值或內容。 – Kami

1

我在哪裏在fieldElement.InnerText收到錯誤= ...

我強烈懷疑這是不是哪裏你得到錯誤。鑑於它說「不能被包含在一個名爲」部分,我懷疑這問題:

fieldElement = doc.CreateElement(itemname); 

它的優良有任意的文本文字,但不是作爲一個元素名稱。想要從數據創建元素名稱也很不尋常。你確定你不想要類似的東西:

fieldElement = doc.CreateElement("itemname"); 

+0

我收到itemname =「Adam&Evafrisør」..此字符串必須創建爲xmlelemnt.here,我收到錯誤。 – user642378

0

&需要轉義爲&amp;否則它是無效的XML。

您應該在將數據庫文本放入元素之前對其進行XML編碼。有關如何執行此操作,請參見this question

+0

我收到itemname =「Adam&Evafrisør」..此字符串必須創建爲xmlelemnt.here,我收到錯誤。 – user642378

+1

@ user642378:理解。 '&'在屬性值或元素中是非法的。 –