如何才能只获取XML元素的外部标记

本文关键字:元素 外部 XML 获取 | 更新日期: 2024-09-19 22:35:23

如果我有一个类似的XmlNode

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

我可以得到它的InnerXml("Content"),但我怎么能得到相反的呢?也就是说,只有由其开始标记和结束标记分隔的外部标记:

<element attribute="value">

</element>

我想排除内部xml,所以XmlNode类的OuterXml属性不起作用。

我是否必须通过抓取每个片段并将其格式化为字符串来手动构建它?如果是这样的话,除了元素的名称、前缀和属性之外,XML元素还可以附带哪些我应该记住要说明的属性?

如何才能只获取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();