0

如果我有XmlNode这样的

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

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

<element attribute="value">

</element>

我想排除内部 xml,所以类OuterXml上的属性XmlNode不会做。

我是否必须通过抓取每一块并将它们格式化为字符串来手动构建它?如果是这样,除了元素的名称、前缀和属性之外,XML 元素还有哪些我应该记住的其他属性?

4

2 回答 2

1

因此,如果我正确理解您,您想要的只是OuterXml没有InnerXml. 在这种情况下,您可以使用外部 XML 并将内容替换为空字符串。

var external = xml.OuterXml.Replace(xml.InnerText, string.Empty);
于 2015-03-03T01:49:18.343 回答
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();
于 2015-03-03T01:51:35.680 回答