2009-09-12 26 views
19

Jak dodać istniejący ciąg Xml do XElement?Jak dodać istniejący ciąg Xml do XElement

Ten kod

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

oczywiście produkuje ten

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

ale muszę to

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

jakieś pomysły?

Odpowiedz

29

To powinno działać:

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

Świetnie! Nie patrzyłem na metody klasowe. Dziękuję Ci bardzo! –

1

Zobacz moją odpowiedź na Is there an XElement equivalent to XmlWriter.WriteRaw?

zasadniczo zastąpić zastępczy za treść tylko wtedy, gdy wiesz, że to już prawidłowy XML.

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

Ta metoda może być również szybsza niż jej analiza za pomocą XElement.Parse.

2

Odpowiedź przez Sani Singh Huttunena umieścić mnie na właściwe tory, ale pozwala tylko jeden wynik element w wyników elementu.

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

nie z System.Xml.XmlException

Istnieje wiele elementów korzeniowe.

I rozwiązać ten Przesuwając wyniki element na łańcuch znaków

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

tak, że posiada tylko jeden element bazowy, a następnie dodaje się przetworzoną ciąg bezpośrednio do elementu nadrzędnego, na przykład:

parent.Add(XElement.Parse(xmlString)); 
Powiązane problemy