2016-08-26 4 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> узел, содержащий указанный fieldId.

Надеюсь, это будет полезно для других людей. (Excel 2015)

ответ

0

Он работает в текущем состоянии. См. Код.

Смежные вопросы