如果我有一个类似的XmlNode
<element attribute="value">
Content
</element>
我可以得到它的InnerXml
("Content
"),但我怎么能得到相反的呢?也就是说,只有由其开始标记和结束标记分隔的外部标记:
<element attribute="value">
和
</element>
我想排除内部xml,所以XmlNode
类的OuterXml
属性不起作用。
我是否必须通过抓取每个片段并将其格式化为字符串来手动构建它?如果是这样的话,除了元素的名称、前缀和属性之外,XML元素还可以附带哪些我应该记住要说明的属性?
所以,如果我正确理解你,你想要的只是OuterXml
而不是InnerXml
。在这种情况下,您可以使用外部XML并用空字符串替换内容。
var external = xml.OuterXml.Replace(xml.InnerText, string.Empty);
如果您不介意更改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();