如何删除 XmlElement ? (XmlNode 与 XmlElement)

Posted

技术标签:

【中文标题】如何删除 XmlElement ? (XmlNode 与 XmlElement)【英文标题】:How to Remove XmlElement ? (XmlNode vs XmlElement) 【发布时间】:2010-12-06 08:26:30 【问题描述】:

我尝试在 C#2.0 中从我的 Xml 文件中删除一些 XmlElements。 我可以使用XmlNode.Remove() 方法成功删除它。但是XmlElement中没有Remove方法。

我用谷歌搜索并找到了这个。

元素是一种节点。实际上,如果您查看 .NET Framework 中的 XmlNode 和 XmlElement 的成员,您会发现它们非常相似,但 XmlElement 的内容更多。它继承XmlNode,然后进一步定制。这是因为元素更专业。一个节点的范围更普遍。文档是一个节点,处理指令是一个节点,等等。元素不同。如果查看元素的 XmlNodeType 属性,您会发现它是 Element,是您找到的众多节点类型之一。

如果元素是一种节点,那么为什么我不能使用删除命令。那怎么办?

XmlDocument doc_AlarmSettingUp = new XmlDocument();
doc_AlarmSettingUp.Load(xmlFile_AlarmSettingUp);
XmlNode rootDest = doc_AlarmSettingUp.SelectSingleNode("/Equipment/AlarmSettingUp/EnabledALIDs");
foreach (XmlElement el_AlarmSettingUp in doc_AlarmSettingUp.SelectNodes("/Equipment/AlarmSettingUp/EnabledALIDs/ALID"))

    XmlElement outEl;
    if (lookup.TryGetValue(el_AlarmSettingUp.GetAttribute("alid"), out outEl))
    
        // exists; element now in "other"
        // Console.WriteLine("exists");
    
    else
    
        // doesn't exist
        Console.WriteLine("doesn't exist");
        // Then How can I remove element with an element method? Thanks.
    

【问题讨论】:

【参考方案1】:

以下代码应该适用于任何XmlElement

if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl);

【讨论】:

这正是我所需要的。谢谢。【参考方案2】:

你想用上面的代码做什么?据我所知,它与问题无关。

在 XmlElement(即 XmlNode)上调用 Remove 有什么问题?

【讨论】:

我试图找到一种方法来删除XmlElement。感谢您的回复。【参考方案3】:

据我所知,XmlNode 也没有 Remove() 方法。它确实有一个RemoveChild(XmlNode) 方法,XmlElement 也有。您应该使用父元素的RemoveChild 来移除子元素。

【讨论】:

对不起我的错误。我应该把整个声明写成XmlNode.RemoveChile(XmlNode);

以上是关于如何删除 XmlElement ? (XmlNode 与 XmlElement)的主要内容,如果未能解决你的问题,请参考以下文章

如何创建带前缀的 XmlElement 属性?

如何使用 JAXB 创建没有价值的 XmlElement

VB.NET 和 XmlElement() 如何从 API 调用中获取元素的值?

在 .NET 中,如何将 XmlElement 写入 XmlTextWriter,其中元素可能有子元素

我如何在XmlDocument的XmlElement中放置字符串

使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符