2009-09-12 11 views
19

Come aggiungere una stringa Xml esistente in XElement?Come aggiungere una stringa Xml esistente in XElement

Questo codice

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

naturalmente produce questo

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

, ma ho bisogno di questo

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

Tutte le idee?

risposta

29

Questo dovrebbe funzionare:

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

Eccellente! Non ho guardato i metodi di classe. Grazie mille! –

1

Vedere la mia risposta sul Is there an XElement equivalent to XmlWriter.WriteRaw?

In sostanza, sostituire un segnaposto per il contenuto solo se sai che è già XML valido.

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

Questo metodo può anche essere più veloce di parsing con XElement.Parse.

2

La risposta da Sani Singh Huttunen mi ha messo sulla strada giusta, ma permette solo una risultato elemento nel risultati elemento.

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

fallisce con lo System.Xml.XmlException

Ci sono diversi elementi radice.

Ho risolto questo spostando i risultati elemento alla stringa letterale

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

modo che aveva un solo elemento radice e quindi aggiunto stringa analizzata direttamente all'elemento genitore, in questo modo:

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