Подтвердить что ты не робот

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

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

Этот код

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

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

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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

Ответ Sani Singh Huttunen поставил меня на правильный путь, но он позволяет только один элемент результата в элементе результатов.

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

не работает с System.Xml.XmlException

Существует несколько корневых элементов.

Я решил это, перемещая элемент результатов в строковый литерал

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

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

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