0

TreeView のいくつかのノードの名前を保持するこの XML があります。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
4

1 に答える 1

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
于 2013-10-03T19:37:26.693 に答える