Как добавить существующую строку XML в XElement

StackOverflow https://stackoverflow.com/questions/1414561

  •  06-07-2019
  •  | 
  •  

Вопрос

Как добавить существующую строку XML в XElement?

Этот код

        var doc = new XDocument(
            new XElement("results", "<result>...</result>")
        );

конечно производит это

  <results>&lt;result&gt;&lt;/result&gt;</results>

но мне это нужно

  <results><result>...</result></results>

Есть идеи?

Это было полезно?

Решение

Это должно работать:

var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));

Другие советы

Ответ Сани Сингха Хуттунена поставил меня на правильный путь, но он допускает только один элемент result в элементе results .

var xmlString = "<result>sometext</result><result>alsotext</result>";

завершается с ошибкой System.Xml.XmlException

  

Есть несколько корневых элементов.

Я решил эту проблему, переместив элемент results в строковый литерал

var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";

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

parent.Add(XElement.Parse(xmlString));

Смотрите мой ответ на Есть ли эквивалент XElement в XmlWriter.WriteRaw?

По сути, замените заполнитель для контента , только если вы знаете, что это уже допустимый XML .

var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);

Этот метод также может быть быстрее, чем его синтаксический анализ с помощью XElement.Parse .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top