我有这个XML,它保留了TreeView中某些节点的名称。
在TreeView中删除节点后,我还必须从XML文件中删除该节点。
我设法运行代码删除节点配置文件2的内容,但我想删除父节点:“<Profile></Profile>
”。
请用正确的代码帮助我!
这些是原始节点:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Profile 1</Profile_Name>
<Profile_Path>X:\Tests</Profile_Path>
</Profile>
<Profile>
<Profile_Name>Profile 2</Profile_Name>
<Profile_Path>X:\Tests</Profile_Path>
</Profile>
</Profiles>
运行代码后,结果:
<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Profile>
<Profile_Name>Prof 1</Profile_Name>
<Profile_Path>X:\Tests</Profile_Path>
</Profile>
<Profile>
</Profile>
</Profiles>
这是使用的代码:
Public Sub DeleteXml()
ProfileList.Load(xml_path)
Dim nodes_list As XmlNodeList = ProfileList.SelectNodes("Profiles")
Dim profile_node As XmlNode = ProfileList.SelectSingleNode("Profile")
Dim profile_name_node As XmlNode = ProfileList.SelectSingleNode("Profile_Name")
Dim bool As Boolean
For Each profile_node In nodes_list
For Each profile_name_node In profile_node
If EManager.TreeView1.SelectedNode.Text = profile_name_node.FirstChild.InnerText Then
bool = True
Else
bool = False
End If
If bool = True Then
profile_name_node.RemoveAll()
End If
Next
Next
End Sub
答案 0 :(得分:0)
这可能不是最优雅的代码,但我只是对其进行了测试并且有效:
Public Sub DeleteXml()
Dim profileList As New XmlDocument()
profileList.Load("XmlFile1.xml")
Dim profilesNode As XmlNode = profileList.SelectSingleNode("Profiles")
Dim profiles As XmlNodeList = profilesNode.SelectNodes("Profile")
For index As Integer = 0 To profiles.Count - 1
Dim profile As XmlNode = profiles(index)
If "Profile 2" = profile.FirstChild.InnerText Then
profile.ParentNode.RemoveChild(profile)
End If
Next
profileList.Save("XmlFile2.xml")
End Sub