Добавление элемента в XML с помощью linq to XML - PullRequest
1 голос
/ 26 сентября 2011

у меня есть этот фрагмент кода, который я использую для добавления некоторых элементов:

  string xmlTarget = string.Format(@"<target name='{0}' type='{1}' layout='${{2}}'  />",
                                                new object[] { target.Name, target.Type, target.Layout });
            Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            var xmlDoc = XElement.Load(configuration.FilePath);
            var nlog = xmlDoc.Elements("nlog");

            if (nlog.Count() == 0)
            {
                return false;
            }
            xmlDoc.Elements("nlog").First().Elements("targets").First().Add(xmlTarget);
            xmlDoc.Save(configuration.FilePath,SaveOptions.DisableFormatting);
            configuration.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("nlog");
            return true;

он должен добавить цель в xml, проблема в том, что он заменяет «<» на «<code>&lt;» и">" с "&gt;", что испортило мой xml-файл.

как мне это исправить?

Примечание пожалуйста, не обращайте внимания на nlog, i`Я обеспокоен проблемой linqtoxml.

1 Ответ

4 голосов
/ 26 сентября 2011

Вы добавляете строку .Это будет добавлено как содержание.Если вы хотите добавить элемент , вы должны сначала разобрать его следующим образом:

XElement element = XElement.Parse(xmlTarget);

Или, желательно, вместо этого построить его:

XElement element = new XElement("target",
    new XAttribute("type", target.Name),
    new XAttribute("type", target.Type),
    // It's not clear what your format string was trying to achieve here
    new XAttribute("layout", target.Layout));

В основном, есливы используете манипуляции со строками для создания XML, а затем анализируете его, вы делаете это неправильно.Используйте сам API для создания объектов на основе XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...