Ответ 1
Это должно работать:
var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
Как добавить существующую строку 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)));
Посмотрите мой ответ на Есть ли XElement, эквивалентный XmlWriter.WriteRaw?
По существу, замените местозаполнитель для содержимого только в том случае, если вы знаете, что он уже имеет правильный XML.
var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);
Этот метод также может быть быстрее, чем разбор его с помощью XElement.Parse
.
Ответ 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));