繁体   English   中英

检索XmlNode SelectSingleNode父节点

[英]Retrieving XmlNode SelectSingleNode Parents Node

堆栈溢出对我有所帮助,并决定加入并自己提问。

我尝试的过程基本上是从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();

它删除节点的所有子节点,不包括父节点null。 当我调试它并尝试获取Parent时,由于某些奇怪的原因似乎返回null并且无法弄清楚原因。

XML的新手,所以不确定我做错了什么...

如果在调用RemoveAll()后尝试获取父节点,则所选节点不再存在。

要删除整个服务器元素,您可以使用类似的东西。

    XmlNode nodeParent = selectedNode.ParentNode;
    nodeParent.ParentNode.RemoveChild(nodeParent);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM