.net - read - Cómo agregar una cadena Xml existente en un XElement
xelement to string c# (3)
¿Cómo agregar una cadena Xml existente en un XElement?
Este codigo
var doc = new XDocument(
new XElement("results", "<result>...</result>")
);
por supuesto produce esto
<results><result></result></results>
pero necesito esto
<results><result>...</result></results>
¿Algunas ideas?
Esto debería funcionar:
var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));
La respuesta de Sani Singh Huttunen me puso en el camino correcto, pero solo permite un elemento de resultado en el elemento de resultados .
var xmlString = "<result>sometext</result><result>alsotext</result>";
falla con la excepción System.Xml.XmlException
Hay varios elementos raíz.
Resolví esto moviendo el elemento de resultados a la cadena literal
var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";
de modo que solo tenía un elemento raíz y luego agregaba la cadena analizada directamente al elemento principal, como esto:
parent.Add(XElement.Parse(xmlString));
Ver mi respuesta en ¿Existe un XElement equivalente a XmlWriter.WriteRaw?
Esencialmente, reemplace un marcador de posición para el contenido solo si sabe que ya es un XML válido .
var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);
Este método también puede ser más rápido que analizarlo con XElement.Parse
.