Исключить различные узлы из экспорта XML - PullRequest
0 голосов
/ 08 октября 2019

Я импортировал XML в Excel и хотел бы экспортировать XML из Excel, но исключаю некоторые сопоставленные узлы. Вот XML в настоящее время:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<ImportExportRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Version>1.99</Version>
    <Product>Test Software</Product>
   -<Employees>
      -<Employee>
          <EmployeeID>76</EmployeeID>
          <Name>John Smith</Name>
       </Employee>
    <Employees>
   -<Job Roles>
      -<Role>
         -<Individual>
              <Skillset>55</Skillset>
              <Skillset2>854</Skillset2>
          </Individual>
       </Role>
    </Job Roles>
   -<Attributes>
      -<Att1>
         -<Related>
              <DataInput>98545</DataInput>
              <DataOutput>874445</DataOutput>
          </Related>
       </Att1>
    </Attributes>

И я бы хотел экспортировать

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<ImportExportRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Version>1.99</Version>
    <Product>Test Software</Product>
   -<Employees>
      -<Employee>
          <EmployeeID>76</EmployeeID>
          <Name>John Smith</Name>
       </Employee>
    <Employees>
   -<Job Roles>
      -<Role>
         -<Individual>
              <Skillset>55</Skillset>
          </Individual>
       </Role>
    </Job Roles>

Код, который я сейчас использую для экспорта XML, выглядит так:

Sub ExportAsXMLData()
 Dim objMapToExport As XmlMap

 Set objMapToExport = ActiveWorkbook.XmlMaps("ALL")

 If objMapToExport.IsExportable Then

 ActiveWorkbook.SaveAsXMLData "Employee Data.xml", objMapToExport
 Else
 MsgBox "Cannot use " & objMapToExport.Name & _
 "to export the contents of the worksheet to XML data."
 End If
End Sub

Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 08 октября 2019

Используйте объект MSXML2.DOMDocument для анализа документа, а затем вы можете манипулировать узлами с помощью доступных методов.

Попробуйте что-то вроде этого:

Dim xmlObj As MSXML2.DOMDocument
Dim xmlSelector As MSXML2.IXMLDOMSelection

Set xmlObj = CreateObject("MSXML2.DOMDocument")

With xmlObj
  .validateOnParse = true
  .setProperty "SelectionLanguage", "XPath"
  If Not .load(xmlDocPath) Then
    (throw error...)
  End If
  Set xmlSelector = xmlObj.selectNodes("/ImportExportRecord/Attributes") 'take xpath as argument'
  xmlSelector.removeAll
  .save(saveToFilePath) 
End With

Вам необходимо проверить, что "Microsoft XML, v3.0 "библиотека проверена в ваших ссылочных библиотеках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...