Excel 使用VBA查找XML树中父节点的位置
我正在Excel中使用VBA。我有一个具有以下结构的XML文件:Excel 使用VBA查找XML树中父节点的位置,excel,xml,vba,Excel,Xml,Vba,我正在Excel中使用VBA。我有一个具有以下结构的XML文件: <Level_A> <Level_B> <Level_C>First value</Level_C> <Level_C>Second value</Level_C> </Level_B> <Level_B> <Level_C>Third value<
<Level_A>
<Level_B>
<Level_C>First value</Level_C>
<Level_C>Second value</Level_C>
</Level_B>
<Level_B>
<Level_C>Third value</Level_C>
<Level_C>Fourth value</Level_C>
</Level_B>
</Level_A>
我正在寻找相同的功能,但这次读取Level_B节点的唯一位置
我为什么要问这个问题?
我必须阅读很多不同的XML文件和财务数据。所有文件都包含相同类型的信息,但结构不同。所有XML文件的共同点是,它们的财务价值类似于$100.00
我希望有灵活的代码,这样我就可以直接指向财务价值的节点路径,然后简单地在XML树中上下查找我需要的所有其他数据
下面是我需要阅读的两个XML结构的示例(还有更多)。我希望循环遍历包含财务值的节点,并在XML树上下灵活地查找货币、事务ID和许多其他数据。有时我甚至需要上5个父节点才能找到我需要的
在此示例中,没有具有唯一事务ID的标记或属性:
<transactions>
<transaction>
<currency>USD</currency>
<financialvalues>
<value>100.00</value>
<value>200.00</value>
</financialvalues>
</transaction>
<transaction>
<currency>USD</currency>
<financialvalues>
<value>300.00</value>
<value>400.00</value>
</financialvalues>
</transaction>
</transactions>
美元
100
200
美元
300
400
在另一个XML结构中,标记TransactionID中有一个唯一的事务ID。(这使它更容易…)
5.
100
美元
200
美元
我不想为每个XML结构编写单独的脚本,但可以灵活地循环遍历每个XML文件的FinancialValue标记,然后上下查找所需内容
因此,在第一个XML结构中,没有标记或属性告诉我唯一的TransactionID。因此,我想访问父事务的位置号,以便知道哪个财务值属于哪个事务。为什么不通过B节点循环?期待您的回复。我想避免循环通过。我想在循环时从中检索数据。我可以在使用ID属性时执行此操作,但在本例中没有ID属性。我知道每个节点在XML树中都有唯一的位置,所以我的想法是检索唯一的位置。但是我不知道如何。每个
Level_B
节点是否包含一个或多个Level_C
节点?Level_B节点可以包含0、1或2个Level_C节点。我需要获取XML文件中的所有Level_C节点,并知道它们的父节点的唯一位置号。投票重新打开,因为很明显@Zxcv想要获得识别的父节点位置(制定“唯一”位置)。
<transactions>
<transaction>
<currency>USD</currency>
<financialvalues>
<value>100.00</value>
<value>200.00</value>
</financialvalues>
</transaction>
<transaction>
<currency>USD</currency>
<financialvalues>
<value>300.00</value>
<value>400.00</value>
</financialvalues>
</transaction>
</transactions>
<transactions>
<transaction>
<transactionID>5</transactionID>
<lines>
<line>
<financialvalue>100.00</value>
<currency>USD</currency>
</line>
<line>
<financialvalue>200.00</value>
<currency>USD</currency>
</line>
</lines>
</transaction>
</transactions>