/ /特定のXMLノードを見つけてその親ノードを削除する方法-xml、vb6、xml-parsing

特定のXMLノードを見つけてその親ノードを削除する方法 - xml、vb6、xml解析

次のようなXMLファイルがあります

<abc>
<ab>value</ab>
<aa>time</aa>
<ac>money</ac>
</abc>
<abc>
<ab>right</ab>
<aa>left</aa>
<ac>straight</ac>
</abc>

私が欲しいのは、値が「左」のノードを見つけて、その親ノードを削除して、最後に得るものが

<abc>
<ab>value</ab>
<aa>time</aa>
<ac>money</ac>
</abc>

前もって感謝します

回答:

回答№1は1

ドキュメント要素を追加して有効なXMLに修正した場合:

<doc>
<abc>
<ab>value</ab>
<aa>time</aa>
<ac>money</ac>
</abc>
<abc>
<ab>right</ab>
<aa>left</aa>
<ac>straight</ac>
</abc>
</doc>

次のようなことができます:

Dim DOM As MSXML2.DOMDocument
Dim Node As MSXML2.IXMLDOMNode

Set DOM = New MSXML2.DOMDocument
With DOM
.async = False
.preserveWhiteSpace = True
If .Load("sample.xml") Then
.setProperty "SelectionLanguage", "XPath"
Set Node = .selectSingleNode("//*[.="left"]")
If Not Node Is Nothing Then
.documentElement.removeChild Node.parentNode
On Error Resume Next
Kill "sample.xml"
On Error GoTo 0
.save "sample.xml"
MsgBox "Done, saved as sample.xml"
Else
MsgBox "No ""left"" found"
End If
Else
MsgBox "Load failed!" & vbNewLine & vbNewLine _
& CStr(.parseError.errorCode) & " " _
& .parseError.reason
End If
End With