2013-10-03 110 views
0

我有这个XML,它保留了TreeView中某些节点的名称。 在我删除TreeView中的节点后,我必须从XML文件中删除节点。 我设法运行代码来删除节点配置文件2的内容,但我也想删除父节点:“<Profile></Profile>”。用于删除XML节点的代码

请帮我用正确的代码!

这些都是原来的节点:

<?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

这可能不是最优雅的代码,但我只是测试它,它的工作原理:

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 
+0

它的工作。谢谢! – guest

+0

很高兴听到它亚历克斯。请[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – nunzabar