【发布时间】:2016-03-02 09:13:04
【问题描述】:
我正在尝试删除特定 element(path) 包含值的多个节点,但我收到了 System.NullReferenceException 任何我出错的帮助,我将不胜感激。
我的 xml 看起来像这样:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<ApplicationData Version="12.5.1" RootPath="FireFox-FILES">
<RegistrySystem>
<DIR Operation="+" Path="C:\Temp\Microsoft\MediaPlayer\ShimInclusionList" />
<DIR Operation="+" Path="C:\Temp\MediaPlayer\ShimInclusionList\MM.EXE" />
<DIR Operation="+" Path="C:\Temp\MediaPlayer\ShimInclusionList\plugin-container.exe" />
<DIR Operation="+" Path="C:\Temp\Microsoft\MediaPlayer">
<ENTRY Name="" Value="43.0.4" Type="1" />
<ENTRY Name="CurrentVersion" Value="43.0.4 (x86 en-GB)" Type="1" />
</DIR>
<DIR Operation="+" Path="C:\Program Files\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe" />
<DIR Operation="+" Path="C:\Program Files\Microsoft\MediaPlayer\ShimInclusionList2\plugin.exe" />
<DIR Operation="+" Path="C:\Program Files\Microsoft\MediaPlayer\ShimInclusionList2\container.exe" />
<DIR Operation="+" Path="C:\Program Files\Microsoft\MediaPlayer\ShimInclusionList4">
<ENTRY Name="" Value="43.0.4" Type="1" />
<ENTRY Name="CurrentVersion" Value="43.0.4 (x86 en-GB)" Type="1" />
</DIR>
</RegistrySystem>
</ApplicationData>
我的代码如下所示:
XDocument xdoc = XDocument.Load(XmlFile);
foreach (var node in xdoc.Descendants("DIR").Where(status => status.Attribute("Path").Value.Contains(@"C:\Temp\")))
{
node.Remove();
}
xdoc.Save(XmlFile);
我不确定我哪里出错了。
【问题讨论】:
-
在尝试从 XML 文件中加载
xdoc后是否可能为空? -
对不起,我的意思是属性。
-
您确定没有没有
Path属性的任何DIR元素吗?这肯定会导致问题...另请注意,您可以在返回一系列元素的查询上调用Remove(),然后它将全部删除:) -
这不是确实是规范问题的副本。异常以一种非常不明显的方式在框架代码中引发。普通的诊断没有帮助。