2016-08-26 45 views
0

多くのオプションをテストするために検索を使用しましたが、別のオプションもあります。子ノードをXMLから削除する

私のxmlファイル

<fields> 
    <field> 
    <fieldId>1</fieldId> 
    <fieldName>Reporting Member State</fieldName> 
    <worksheetName>AIF1</worksheetName> 
    <fieldStartLine>7</fieldStartLine> 
    <fieldEndLine>7</fieldEndLine> 
    <fieldStartCol>3</fieldStartCol> 
    <fieldEndCol>13</fieldEndCol> 
    </field> 
    <field> 
    <fieldId>2</fieldId> 
    <fieldName>Version</fieldName> 
    <worksheetName>AIF1</worksheetName> 
    <fieldStartLine>8</fieldStartLine> 
    <fieldEndLine>8</fieldEndLine> 
    <fieldStartCol>3</fieldStartCol> 
    <fieldEndCol>13</fieldEndCol> 
</field> 
<field> 
    <fieldId>3</fieldId> 
    <fieldName>Creation date and time of the file</fieldName> 
    <worksheetName>AIF1</worksheetName> 
    <fieldStartLine>9</fieldStartLine> 
    <fieldEndLine>9</fieldEndLine> 
    <fieldStartCol>3</fieldStartCol> 
    <fieldEndCol>13</fieldEndCol> 
</field> 
</fields> 

マイコード:

Sub removeXML(fieldId As Integer) 
    Dim found As Boolean 
    found = False 
    Dim strPath As String 
    strPath = ThisWorkbook.Path & "\src\fields.xml" 
    Dim XDoc As Object 
    Set XDoc = CreateObject("MSXML2.DOMDocument") 
    XDoc.async = False 
    XDoc.validateOnParse = False 
    XDoc.Load (strPath) 
    Set xObjDetails = XDoc.ChildNodes(0) 
    Set xObject = xObjDetails.FirstChild 
    For Each xObject In xObjDetails.ChildNodes 

     For Each xChild In xObject.ChildNodes 
      If (xChild.BaseName = "fieldId") And (xChild.Text = fieldId) Then 
       found = True 
      End If 
      If (found) Then 
       xObject.ParentNode.RemoveChild (xObject) 
       XDoc.Save (ThisWorkbook.Path & "\src\fields2.xml") 
       Exit Sub 
      End If 
     Next xChild 
    Next xObject 
End Sub 

目標は、指定されたフィールド識別子が含まれています全体<field>ノードを削除することです。

他の人にも役立つことを願っています。 (Excel 2015)

答えて

0

現在の状態で動作します。コードを参照してください。

関連する問題