2015-03-03 44 views
0

如果我有一個XmlNode這樣如何才能獲得XML元素的外部標記?

<element attribute="value"> 
    Content 
</element> 

我可以得到它InnerXml(「Content」),但我怎麼能得到相反的?也就是說,只要外部標記它的開始標記和結束標記分離:在XmlNode

<element attribute="value"> 

</element> 

我要排除的內部XML,所以OuterXml屬性不會做。

我必須通過抓住每個部分並將它們格式化爲字符串來手動構建它嗎?如果是這樣,除了元素的名稱,前綴和屬性之外,XML元素還有哪些其他屬性,我應該記住要考慮?

+1

刪除所有子節點可能會更容易(肯定會產生更多的相關性ct XML),如果您不能更改文檔,可能需要先複製整個節點。 – 2015-03-03 01:26:26

回答

1

所以,如果我正確地理解你所有你想要的是OuterXml沒有InnerXml。在這種情況下,您可以使用外部XML並用空字符串替換內容。

var external = xml.OuterXml.Replace(xml.InnerText, string.Empty); 
0

你可以嘗試使用這兩種選擇,如果你不介意改變的XMLNode:

foreach(XmlNode child in root.ChildNodes) 
    root.RemoveChild(child); 

Console.WriteLine(root.OuterXml); 

或者

for (int i=0; i <root.ChildNodes.Count; i++) 
    { 
    root.RemoveChild(root.ChildNodes[i]); 
    } 

注:

//RemoveAll did not work since it got rid of the xml attributes which you wanted to preserve 
root.RemoveAll();