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

时间:2015-03-03 01:10:53

标签: c# xml parsing outerxml

如果我有XmlNode这样的话

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

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

<element attribute="value">

</element>

我想排除内部xml,因此OuterXml类上的XmlNode属性不会这样做。

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

2 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您只需OuterXml而不是InnerXml。在这种情况下,您可以使用外部XML并使用空字符串替换内容。

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

答案 1 :(得分: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();