[英]remove nodes listed into XmlNodeList from XML file
我的XML文件有问题。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<settings>
<excelFilePath>C:\Temp\</excelFilePath>
<mailHost>smtp</mailHost>
<mailPort>25</mailPort>
<mailFrom>me@test.com</mailFrom>
<keepInCopy>
<mailCC>email1@test.com</mailCC>
<mailCC>email2@test.com</mailCC>
<mailCC>email3@test.com</mailCC>
</keepInCopy>
<mailSubject>My Mail subject</mailSubject>
<mailBodyPath>Templates\Template1.htm</mailBodyPath>
</settings>
</config>
实际上,我只需要删除所有标签“ mailCC”。 我目前正在尝试此C#代码,但没有任何反应:
XmlDocument xml = new XmlDocument();
xml.Load(FilePath);
XmlNodeList xnList = xml.GetElementsByTagName("mailCC");
foreach (XmlNode xn in xnList)
{
xn.RemoveChild(xn.FirstChild);
xml.Save(FilePath);
}
请问你能帮帮我吗?
删除节点将更新集合,因此您不应使用foreach
循环。
XmlNodeList xnList = xml.GetElementsByTagName("mailCC");
while (xnList.Count > 0) {
xnList[0].ParentNode.RemoveChild(xnList[0]);
}
使用XmlDocument
将从其父节点中删除一个节点。 但是您也可以这样做:
var xn = xml.SelectSingleNode("/config/settings/keepInCopy");
if (xn != null)
{
xn.RemoveAll(); // Remove all "mailCC" elements, but keep "keepInCopy" node **OR**
xn.ParentNode.RemoveChild(xn); // Remove "keepInCopy" element and all children
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.