如何在导入之前过滤XML /将其链接到Excel中的地图

如何在导入之前过滤XML /将其链接到Excel中的地图

我想过滤一个XML到一个logging然后通过链接到地图导入logging到Excel。 现在我只能做到以下几点:

  1. 使用XPathexpression式将节点过滤为IXMLDOMNode
  2. 获取节点的xmlstring
  3. 用根节点标签扩展string
  4. 使用.ImportXml(…)将string分配给映射

我不知道是否有一个更简单的方法来做到这一点,特别是第3步(扩展string)似乎有点复杂。

备注:示例xml取自“Excel 2007 VBA程序员参考”。

提前谢谢了

安德烈

VBA代码:

Sub FilterNode() Dim oXmlDoc As DOMDocument60 Dim oXmlNode As IXMLDOMNode Dim strXml As String Dim oMap As XmlMap 'Filter xml Set oXmlDoc = New DOMDocument60 oXmlDoc.async = False oXmlDoc.Load (ThisWorkbook.Path & "\EmployeeSales.xml") Set oXmlNode = oXmlDoc.SelectSingleNode("//Employee[Empid=24601]") strXml = oXmlNode.XML 'Extend xml String 'is this really necessary? strXml = "<EmployeeSales>" & vbCrLf & strXml & vbCrLf & "</EmployeeSales>" 'link xml with map Set oMap = ThisWorkbook.XmlMaps(2) oMap.ImportXml (strXml) End Sub 

示例XML:

 <?xml version="1.0"?> <EmployeeSales> <Employee> <Empid>2312</Empid> <FirstName>Mike</FirstName> <LastName>Alexander</LastName> <InvoiceNumber>100</InvoiceNumber> <InvoiceAmount>2300</InvoiceAmount> </Employee> <Employee> <Empid>24601</Empid> <FirstName>Stephen</FirstName> <LastName>Bullen</LastName> <InvoiceNumber>200</InvoiceNumber> <InvoiceAmount>3211</InvoiceAmount> </Employee> </EmployeeSales> 

给出的代码示例是最好的方法。