次のような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