我有一个具有以下结构的xml文件:
<Index>
<Id>Jack</Id>
<Id>Frank</Id>
<Id>Bob</Id>
</Index>
我想要的是检查节点的内部文本,如果它等于特定值,请说“ Frank”,它将删除该节点。我尝试过的是以下内容:
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)
,我会发现确实找到了以Frank为内文的节点。据我了解,Node.ParentNode.RemoveChild(Node)
意味着先转到当前节点的父节点,然后再到该父节点的子节点,删除带有内部文本“ Frank”的节点<Id>
,同时保留所有其他节点名称{{1 }}。但是,当我在记事本中打开它时,仍然可以在XML文件中找到它。我也尝试过使用全部删除,删除父项和删除子项,但无法删除它。