2013-04-01 34 views
3

我需要更新XML文檔;使用C#,最好是Linq To Xml。源XML文件具有以下節點:保留字符串的Xml編碼字符

<characters>Lorem &#xD;Ipsum</characters> 

我需要這個節點更新到這樣的事情:

<characters>Lorem1 &#xD;Ipsum2</characters> 

當我從XML字符串中讀取;我得到這個:

"Lorem &#xD;Ipsum" 

,當我寫使用

copyEl.SetElementValue(ns + "characters", "Lorem1 &#xD;Ipsum2"); 

輸出的XML有編碼的字符的領先符號被重新逃過字符串:

<characters>Lorem1 &amp;#xD;Ipsum2</characters> 

我想按原樣保留原始字符串中的Xml編碼;但我不確定如何去做。有什麼想法嗎?

回答

2

對於這個問題,使用Linq-to-XML或任何xml抽象類的美妙之處在於您無需擔心字符串編碼。你只需要把這個字符串作爲一個C#字符串,並讓LINQ其轉換爲你的XML字符串:

copyEl.SetElementValue(ns + "characters", "Lorem1 \rIpsum2"); 
+0

+ 1提及使用正確的XML API ...請注意,問題是關於#xD,應在讀取時進行標準化(http://www.w3.org/TR/xml/#sec-white-space)。所以需要仔細決定應該發生什麼以及應該編碼什麼(即'\ r'可能是錯誤的)。 –