我尝试从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.
}
}
答案 0 :(得分:2)
以下代码适用于任何XmlElement
:
if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl);
答案 1 :(得分:1)
你想用上面的代码做什么?就我所见,这与问题无关。
在XmlElement(XmlNode)上调用Remove有什么问题?
答案 2 :(得分:1)
据我所知,XmlNode
也没有Remove()
方法。它确实有RemoveChild(XmlNode)
方法,XmlElement
也是如此。您应该使用父元素的RemoveChild
来删除子元素。