Как добавить существующую строку XML в XElement
Вопрос
Как добавить существующую строку XML в XElement?
Этот код
var doc = new XDocument(
new XElement("results", "<result>...</result>")
);
конечно производит это
<results><result></result></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
.