在VBA中获取XML的所有节点
首先也是最重要的一点,如果我在XML文件的命名法上犯了错误,我很抱歉!假设我在XML文件中有以下语法:在VBA中获取XML的所有节点,xml,vba,dom,Xml,Vba,Dom,首先也是最重要的一点,如果我在XML文件的命名法上犯了错误,我很抱歉!假设我在XML文件中有以下语法: <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
马修·甘巴德拉
XML开发人员指南
电脑类
44.95
2000-10-01
深入了解如何创建应用程序
使用XML。
拉尔斯,金
夜雨
幻想
5.95
2000-12-16
一位前建筑师与企业僵尸搏斗,
一个邪恶的女巫,和她自己的童年成为女王
世界的一部分。
等等
但是,有些书有额外的节点,如,
等
我希望将XML文件中的所有书籍转换为列,每行一本。
我已经尝试获取书籍的所有节点值,但是由于缺少一些
节点,我无法使用simple For循环,因为“price”节点的数量不同,而节点的数量也不同
我认为最好是把所有的书循环一遍,然后取各个节点的值。然而,我不知道这可能是什么正确的功能
谢谢 我选择性地将publisher
、preorder
和cover
属性添加到典型的XML代码中,因此测试代码如下所示:
这种方法使用的字典对于大型XML数据来说可能非常慢,因此最好重新编写代码以使用数组而不是字典。我的建议是循环遍历所有顶级XML节点(book
节点)首先,创建一个包含所有可能的子节点的字典——基本上是创建一组超级节点,这些节点将成为表的列。然后开始第二次遍历列表,并将每个book节点的数据添加到相应的列中。您可以通过将任何新遇到的子节点作为新列添加到现有数据的右侧,一次完成此操作。主要问题是,我不知道如何在book节点上循环,因为我不知道适当选择器的正确语法,也不知道如何使用VBA处理XML对象等等。。我在网上找不到这样的信息。看看。它完全符合您的要求。您使用的是什么MS Office应用程序?如果Excel或Access都有XML导入模块。谢谢PeterT!设法让它工作起来,仍然有点困惑于VBA中的XML DOM,但现在它正在做我需要它做的事情!广告冻糕:我用的是Excel