2009-09-12 34 views
19

XElementに既存のXml文字列を追加するにはどうすればよいですか?当然のXElementに既存のXml文字列を追加する方法

このコード

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

この

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

を生成するが、私はこの

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

任意のアイデアがありますか?

答えて

29

これは動作するはずです:

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

優秀!私はクラスメソッドを見ていませんでした。どうもありがとうございました! –

1

は、あなたがそれがすでに有効なXML知っている場合にのみコンテンツのためのプレースホルダを置き換える、基本的にIs there an XElement equivalent to XmlWriter.WriteRaw?

に私の答えを参照してください。

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

この方法は、XElement.Parseで解析するよりも高速である場合があります。

2

サニシンHuttunenによって答えは右のトラックに私を入れて、それだけで結果要素の1 結果要素を可能にします。

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

はSystem.Xml.XmlException

で複数のルート要素があります失敗します。

それが唯一のルート要素を持っていたし、このように、親要素に直接解析された文字列を追加しましたように、私は文字通り

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

文字列に結果要素を動かすことによって、これを解決します:

parent.Add(XElement.Parse(xmlString)); 
関連する問題