/ / Ako nájsť konkrétny uzol XML a odstrániť jeho nadradený uzol? - xml, vb6, xml-parsing

Ako nájsť konkrétny uzol XML a odstrániť jeho nadradený uzol? - xml, vb6, xml-parsovanie

Mám súbor XML, ktorý znie takto

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

Čo chcem je, že dokážem nájsť uzol, ktorý má hodnotu „left“ a potom odstrániť jeho rodičovský uzol, takže to, čo nakoniec dostanem, je

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

Vopred ďakujem

odpovede:

1 pre odpoveď č. 1

Ak to bolo opravené na platné XML pridaním prvku dokumentu:

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

Môžete urobiť niečo ako:

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