【发布时间】:2019-05-02 15:26:09
【问题描述】:
我需要解析数百个结构相同的 XML 文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Concepts>
<ConceptModel name="food">
<Filters>
<Filter type="CC"/>
</Filters>
<Queries>
<Query lang="EN">(cheese, bread, wine)</Query>
<Query lang="DE">(Käse, Brot, Wein)</Query>
<Query lang="FR">(fromaige, pain, vin)</Query>
</Queries>
</ConceptModel>
</Concepts>
我已经阅读了以下互联网上的几篇文章和帖子,但我无法提出解决方案:
到目前为止,我正在做:
Dim oXml As MSXML2.DOMDocument
Set oXml = New MSXML2.DOMDocument
oXml.LoadXML ("C:\folder\folder\name.xml")
Dim Queries As IXMLDOMNodeList
Dim Query As IXMLDOMNode
ThisWorkbook.Sheets(3).Cells(i, 1) = "before loop"
Set Queries = oXml.SelectNodes("/concepts/Queries")
MsgBox "how many Queries " & Queries.Length
For Each Query In Queries
ThisWorkbook.Sheets(3).Cells(i, 1) = "Works"
ThisWorkbook.Sheets(3).Cells(i, 2) = Query.SelectNodes("Query").iTem(0).Text
i = i + 1
Next
这段代码似乎可以被 VBA 理解,但它不读取内容。没有读取循环,这意味着(我猜)查询根本没有循环。 Msgbox "how many queries" 给出 0 作为结果这一事实证实了这一点。但实际上有三个查询。有人可以帮帮我吗?
作为第二个问题,我想问一下
Dim oXml As MSXML2.DOMDocument
将与
相同 Dim oXml As MSXML2.DOMDocument60
自从我签入工具/参考“Microsof XML, v6.0”
我认为带有标签的查询 可能会导致问题。我添加了以下几行:
Dim childs As IXMLDOMNodeList
Set childs = oXml.SelectNodes("/concepts")
MsgBox "childs " & childs.Length
这也给出了 0 作为结果。我希望是 3,因为概念有三个孩子,即 ConceptModel、Filter 和 Queries。所以,我更加疑惑了。
【问题讨论】:
标签: excel xml vba parsing domdocument