Я пытаюсь заменить содержимое XElement с текстом, который содержит произвольные строки, включая HTML комментарии, напримерКак заменить значение XElement без изменения кодировки
<!-- an example goes here -->
<add key="SampleDetailsImporter.StartFolder" value="c:\temp" />
Мой код
var section = configFile.Descendants(sectionToReplace).FirstOrDefault();
// Replace section if enabled and replacement supplied.
if (section!=null && !string.IsNullOrEmpty(replacementString) && replaceEnabled)
{
section.SetValue(replacementString);
}
где replacementString что-то вроде
"<!-- an example goes here --> <add key=\"SampleDetailsImporter.StartFolder\" value=\"c:\temp\" />"
Моя проблема в том, что после замены все символы < и> кодируются как <
и >
;
мне нужен сохраненный файл конфигурации, чтобы выглядеть следующим образом:
<MenuPlugins>
<!-- an example goes here -->
<add key=\"SampleDetailsImporter.StartFolder\" value=\"c:\temp\" />
</MenuPlugins>
и не так:
<MenuPlugins>
<!-- an example goes here -->
<add key=\"SampleDetailsImporter.StartFolder\" value=\"c:\temp\" />
</MenuPlugins>
Как я могу преодолеть это? (Я пробовал применять методы System.Web.HttpUtility.Decode или Encode - никаких улучшений.)
Если вы используете 'ReplaceNodes' вместо' ReplaceWith', вам не нужно включать тег раздела в заменяемую строку, которая, как она выглядит, из вашего вопроса, как вы этого еще не знаете. –
Но мне нужно сохранить любые комментарии xml в значении replacementString, которое, как вы говорите, будет отброшено. Мне нужно заменить существующий элемент точно значением replaceString и иметь встроенные новые строки (\ n или &xA;), переведенные в разрывы строк в XML, когда отображается файл конфигурации. –
Патрик, см. Мой ответ. –