2015-03-03 45 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();