2013-01-04 66 views
1

我正在使用XElement的ReplaceAll函數。我有我必須替換以下圖像元素:使用XElement替換所有函數

<image x="773.35399" y="1175.40315" .... /> 

當我用以下元件取代上述元素:

<image x="23" y="11" .../> 

額外元件被調用之後創建的replaceAll功能和被替換的元素被包裹在裏面。意思是上述的替換結果將是:

<image> 
    <image x="23" y="11" .../> 
    </image> 

我不想在一個額外的元素內包裝替換的元素。我怎樣才能阻止這種行爲?

+0

你的問題是缺少示例代碼 - 你可能稱它爲錯誤的元素... –

回答

1

使用ReplaceWith方法而不是ReplaceAll。後者代替子節點和元素的屬性,而不是替換元素本身。

XDocument xdoc = XDocument.Load(path_to_xml); 
xdoc.Root.Element("image") 
     .ReplaceWith(new XElement("image", 
       new XAttribute("x", 23), 
       new XAttribute("y", 11))); 

xdoc.Save(path_to_xml); 
1

你正在呼籲ReplaceAll大多數likley「圖像」節點本身 - 這將取代所有的孩子用新的內容節點。在你的例子中,「替換子節點」(它在調用之前沒有的)將簡單地添加新的「圖像」節點,就像你看到的一樣。

您可能需要XElement.ReplaceWith