0

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

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

元素是一种节点。实际上,如果您查看 .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.
    }
}
4

3 回答 3

3

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

if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl);
于 2010-12-06T08:41:13.207 回答
1

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

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

于 2010-12-06T08:42:35.673 回答
1

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

于 2010-12-06T08:42:47.310 回答