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<

我正在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_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>