2013-04-01 4 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' может быть неправильным). –

Смежные вопросы