Wie eine vorhandene XML-Zeichenfolge in ein XElement hinzufügen
Frage
Wie eine vorhandene XML-Zeichenfolge in eine XElement hinzufügen?
Dieser Code
var doc = new XDocument(
new XElement("results", "<result>...</result>")
);
natürlich produziert dieses
<results><result></result></results>
, aber ich brauche diese
<results><result>...</result></results>
Irgendwelche Ideen?
Lösung
Dies sollte funktionieren:
var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
Andere Tipps
Die Antwort von Sani Singh Huttunen hat mich auf dem richtigen Weg, aber es kann immer nur ein Ergebnis -Element in den Ergebnisse -Element.
var xmlString = "<result>sometext</result><result>alsotext</result>";
nicht mit der System.Xml.XmlException
Es gibt mehrere Root-Elemente.
Ich löste dies durch die Ergebnisse bewegen -Element auf dem Stringliteral
var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";
, so dass sie hatten nur ein Wurzelelement und dann hinzugefügt, um die analysierte Zeichenfolge direkt an das übergeordnete Element, wie folgt aus:
parent.Add(XElement.Parse(xmlString));
Siehe meine Antwort auf Gibt es ein XElement Äquivalent XmlWriter.WriteRaw?
Im Wesentlichen einen Platzhalter für den Inhalt ersetzen nur, wenn Sie es bereits gültige XML wissen .
var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);
Dieses Verfahren auch schneller sein kann als es mit XElement.Parse
Parsen.