Изменение значения XElement теряет тип CData - PullRequest
0 голосов
/ 06 января 2011

У меня есть файл XML с некоторыми узлами CData. Но когда я пытаюсь изменить их на месте:

var doc = XDocument.Load(filename);
foreach(var el in doc.Descendants("foo"))
{
    el.Value = el.Value.Replace("bar", "baz");
}
doc.Save(filename);

... все они теряют свои типы CData. Какой лучший способ избежать этого? Спасибо!

1 Ответ

2 голосов
/ 06 января 2011

CData и текстовые узлы равнозначны с точки зрения XML.Таким образом, поведение, которое вы видите, является ожидаемым - Value никогда не создает узлы CDATA, так как в этом нет необходимости с точки зрения XML.

Если вам нужно иметь CData, вам нужно явно создать его.См. http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection.aspx для примера.

...