VBA按属性选择XML节点

时间:2013-08-05 17:27:36

标签: xml vba excel-vba xml-parsing excel

我一直在搜索SO(以及互联网的其余部分)以获得答案,但我似乎无法找到根据属性选择XML节点的解决方案。

示例XML:

<foo>
    <bar name="do">A</bar>
    <bar name="rae">B</bar>
    <bar name ="mi">C</bar>
</foo>

因此,如果我想通过B属性的rae值获取name,我已尝试过:

myValue = myXML.selectSingleNode("//foo/bar/").Attributes.getNamedItem("rae").Text

谢谢!

3 个答案:

答案 0 :(得分:2)

最终为我工作的解决方案是:

myValue = myXML.selectSingleNode("var[@name='ID']").Text

答案 1 :(得分:0)

使用你的例子......

myValue = myXML.SelectSingleNode("/foo/bar[@name='rae']").InnerXML

注意在变量名中使用@。您的标准(方括号之间的所有内容)都在您搜索的级别上。

答案 2 :(得分:0)

如果有多个节点,那么我认为您无法使用SelectSingleNode。相反,您可以使用XPath和getElementsByTagName。此外,(尽管可能没有必要)确保您只获得一个节点,但可以使用NextNode。使用您的示例XML的最终代码将是......

myValue = myXML.getElementsByTagName("/foo[@name='rae']/bar").nextNode.nodeTypedValue