我尝试做的过程基本上是从XML文档中选择一个节点,并删除用户选择的整个节点。
现在有些代码!
int index = index = list_serverlist.SelectedIndex;
string selectedItem = list_serverlist.Items[index].ToString();
XmlNode selectedNode = doc.SelectSingleNode("/ServerList/Server/ServerName[text()='" + selectedItem + "']");
selectedNode.ParentNode.RemoveAll();
doc.Save(filePath);
我正在使用的XML文件
<?xml version="1.0"?>
<ServerList>
<Server>
<ServerName>FAB13-HST01</ServerName>
<ServerIP>wasd</ServerIP>
<ServerUsername>..\Administrator</ServerUsername>
<ServerPassword>wasd</ServerPassword>
</Server>
<Server>
<ServerName>FAB13-HST02</ServerName>
<ServerIP>wasd</ServerIP>
<ServerUsername>..\Administrator</ServerUsername>
<ServerPassword>wasd</ServerPassword>
</Server>
<Server>
<ServerName>FAB13-HST03</ServerName>
<ServerIP>wasd</ServerIP>
<ServerUsername>..\Administrator</ServerUsername>
<ServerPassword>wasd</ServerPassword>
</Server>
</ServerList>
现在我看到代码发生的是......
基本上我得到用户从ListBox中选择的内容使其成为一个字符串,而不是在ServerName字段中选择具有该字符串的单个节点。哪些调试似乎工作正常。
但是当我使用命令
时selectedNode.ParentNode.RemoveAll();
删除节点的所有子节点,不包括父节点。当我调试它并尝试获取Parent时,由于某些奇怪的原因它似乎返回null并且无法找出原因。
XML新手,所以不确定我做错了什么......
答案 0 :(得分:3)
如果在调用RemoveAll()后尝试获取父节点,则所选节点不再存在。
要删除整个服务器元素,您可以使用类似。
的内容 XmlNode nodeParent = selectedNode.ParentNode;
nodeParent.ParentNode.RemoveChild(nodeParent);