2009-09-12 11 views
19

¿Cómo agregar una cadena Xml existente en un elemento XElement?Cómo agregar una cadena Xml existente en un XElement

Este código

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

por supuesto produce este

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

pero necesito esta

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

¿Alguna idea?

Respuesta

29

Esto debería funcionar:

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

¡Excelente! No miré los métodos de clase. ¡Muchas gracias! –

1

Véase mi respuesta en Is there an XElement equivalent to XmlWriter.WriteRaw?

Esencialmente, reemplazar un marcador de posición para el contenido sólo si sabe que ya es 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.

2

La respuesta por Sani Huttunen Singh me puso en el camino correcto, pero sólo permite un elementoresultado en el resultados elemento.

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

falla con el System.Xml.XmlException

hay múltiples elementos raíz.

que resolvieron este moviendo los resultados elemento de la cadena literal

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

para que tuviera sólo un elemento fundamental y después añadió la cadena analizada directamente al elemento padre, así:

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