У меня есть XML-файл с такой же структурой, как указано ниже:
<Index>
<Id>Jack</Id>
<Id>Frank</Id>
<Id>Bob</Id>
</Index>
То, что я хочу, это проверить внутренний текст узлов, и если он равен определенному значению, скажите «Фрэнк», что он удаляет этот узел. Я попробовал следующее:
Dim MyDoc as xmlDocument = new xmlDocument()
MyDoc.load("C:\my.xml")
For Each Node as XmlNode in MyDoc.selectNodes("Index/*")
If Node.InnerText=("Frank") Then
Node.ParentNode.RemoveChild(Node)
End If
Next
Mydoc.save("C:\my.xml")
Если я поменяю Node.ParentNode.RemoveChild(Node)
на MsgBox(node.InnerText)
, я вижу, что действительно нахожу узел с Фрэнком в качестве его внутреннего текста. Насколько я понимаю, Node.ParentNode.RemoveChild(Node)
означает переход к родительскому элементу текущего узла, затем дочернему элементу этого родительского элемента следует удалить узел <Id>
с внутренним текстом «Frank», сохраняя при этом все остальные имена узлов <Id>
. Однако он все еще находится в файле XML, когда я открываю его в блокноте. Я также пытался использовать команду «удалить все», «удалить родителя» и «удалить ребенка», но не могу удалить его.