Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想从xml用户选择路径的文件中删除xml节点?_C#_Xml - Fatal编程技术网

C# 我想从xml用户选择路径的文件中删除xml节点?

C# 我想从xml用户选择路径的文件中删除xml节点?,c#,xml,C#,Xml,那个代码不起作用。它没有删除path4节点我该怎么做?请帮帮我。多谢各位 <WindowEntries> <WindowEntry> <Name>tbwUnitOverview</Name> <View>TRN_UNIT</View> <LU>TrnUnit</LU> <DefaultWindowText> windowtext</DefaultWindowText&

那个代码不起作用。它没有删除path4节点我该怎么做?请帮帮我。多谢各位

<WindowEntries>
<WindowEntry>
  <Name>tbwUnitOverview</Name>
  <View>TRN_UNIT</View>
  <LU>TrnUnit</LU>
  <DefaultWindowText> windowtext</DefaultWindowText>
  <Flags>0</Flags>
</WindowEntry>
<WindowEntry>
  <Name>tbwBrandOverView</Name>
  <View>TRN_BRAND</View>
  <LU>TrnBrand</LU>
  <DefaultWindowText />
  <Flags>0</Flags>
</WindowEntry>
<WindowEntry>
  <Name>tbwProductCategory</Name>
  <View>TRN_PROD_CATEGORY</View>
  <LU>TrnProdCategory</LU>
  <DefaultWindowText />
  <Flags>0</Flags>
</WindowEntry>

问题是您正在删除从文档中选择的节点的所有子节点和属性,而不是实际节点本身

见:

如果要删除实际节点,则需要访问父节点(),然后调用RemoveChild方法()传入要删除的节点,如下所示:

string path4 = treeView1.SelectedNode.FullPath.ToString();
XmlNode nodeToRemove = doc.SelectSingleNode(path4);
XmlNode parentNode = nodeToRemove.ParentNode;
parentNode.RemoveChild(nodeToRemove);

希望这有帮助。

该代码不起作用。它没有删除path4节点我怎么做请帮助我。谢谢。可能的重复是您第一次理解您编写的代码吗?你调试过了吗?是的,现在我试着那样做。但它不起作用。如果它不起作用,那你为什么要复制线程?你能给我提供异常的详细信息吗?异常可能是由path4变量中的XPath值引起的。如果此路径不正确,nodeToRemove(以上)将为null,并将导致后续方法/属性调用出现异常。当我单击按钮时,这是一个运行时错误,表示xpathException未处理,并且“Component\WindowEntries\WindowEntry”具有无效令牌。我认为您的XPath在某种程度上是不正确的。您需要调试代码以确定path4变量的值,以便确定错误所在。
string path4 = treeView1.SelectedNode.FullPath.ToString();
XmlNode nodeToRemove = doc.SelectSingleNode(path4);
XmlNode parentNode = nodeToRemove.ParentNode;
parentNode.RemoveChild(nodeToRemove);