如何删除XmlElement? (XmlNode与XmlElement)

时间:2010-12-06 08:26:30

标签: c# xml c#-2.0 xmlnode

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

我用Google搜索并发现了这一点。

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

如果element是一种节点,那么为什么我不能使用remove命令。那怎么样?

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.
    }
}

3 个答案:

答案 0 :(得分:2)

以下代码适用于任何XmlElement

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

答案 1 :(得分:1)

你想用上面的代码做什么?就我所见,这与问题无关。

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

答案 2 :(得分:1)

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