1

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

前もって感謝します

4

1 に答える 1

1

これが document 要素を追加することによって有効な 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
于 2012-06-12T16:14:07.453 に答える