C# 使用c从xml文件中删除元素#
最近我在这个帖子里有一个问题:C# 使用c从xml文件中删除元素#,c#,linq-to-xml,C#,Linq To Xml,最近我在这个帖子里有一个问题: 同样,我正在努力修改xml文件。 以下是xml: <ApplicationConfiguration> <ServerConfiguration> <SecurityPolicies> <ServerSecurityPolicy> <SecurityMode>None_1</SecurityMode> </ServerSecurityP
同样,我正在努力修改xml文件。 以下是xml:
<ApplicationConfiguration>
<ServerConfiguration>
<SecurityPolicies>
<ServerSecurityPolicy>
<SecurityMode>None_1</SecurityMode>
</ServerSecurityPolicy>
<ServerSecurityPolicy>
<SecurityMode>None_2</SecurityMode>
</ServerSecurityPolicy>
</SecurityPolicies>
</ServerConfiguration>
</ApplicationConfiguration>
问题是:
- 当foreach中的代码为
时,它返回一个错误,如:“对象引用未设置为对象的实例”elem.Remove()
- 当foreach内部的代码为
时,label1.Text=elem.Name.LocalName
显示label1
。因此ServerSecurityPolicy
可以正常工作,但是elem.Name.LocalName
不能正常工作elem.Remove()
- 我尝试了
。基于void描述,我认为代码将删除所有子节点(SecurityMode节点),但它不起作用(没有错误,但无法删除任何内容)。与elem.RemoveNodes()
elem.RemoveAll()相同
你能告诉我我做错了什么吗?多谢各位
- 又是我。我已通过替换该行来解决此问题
var this=root.substands()。其中(p=>p.Name.LocalName==“ServerSecurityPolicy”)代码>
与
var this=root.substands(“SecurityPolicies”)代码>
然后,又是我。我已通过替换该行来解决此问题
var this=root.substands()。其中(p=>p.Name.LocalName==“ServerSecurityPolicy”)代码>
与
var this=root.substands(“SecurityPolicies”)代码>
然后RemoveAll()
此代码将有助于获得预期的输出
此代码将有助于获得预期的输出
由于您不只是从正在循环的集合中删除项目,我不确定“使用for循环”是否有效。由于您不只是从正在循环的集合中删除项目,我不确定“使用for循环”是否有效。
<ApplicationConfiguration>
<ServerConfiguration>
<SecurityPolicies>
</SecurityPolicies>
</ServerConfiguration>
</ApplicationConfiguration>
string docaddress = "D:\\abc.xml";
XDocument doc = XDocument.Load(docaddress);
var root = doc.Root;
var these = root.Descendants().Where(p => p.Name.LocalName == "ServerSecurityPolicy");
foreach (var elem in these)
{
elem.Remove();
}
doc.Save(docaddress);
public static void Main(string[] args)
{
string xmlpath = "sample.xml";
XDocument xdoc = XDocument.Load(xmlpath);
var list = xdoc.Elements().Descendants().ToList();
foreach (var item in list)
{
item.Descendants("ServerSecurityPolicy").Remove();
}
xdoc.Save(xmlpath);
}