如何使用XMLDom通过属性索引查询XML

时间:2013-12-05 12:03:45

标签: vbscript xmldom

我正在尝试查询XML文件以获取特定元素的属性值。

当元素具有唯一的属性集时,这可以正常工作,例如

<parent>
<child code="REWC" curr="PLN" amt="1000"/>
</parent>

为了查询上面我使用:

  • object = Microsoft.XMLDOM
  • getElementsByTagName或selectSingleNode method
  • 一旦我有了这个,我运行'getAttribute'方法,它给了我需要的东西

代码段:

Set ElementValue = m_objXmlDom.selectSingleNode("//Txn[" & p_intIndex & "]/" & p_strElementName & " ")

'set attribute value
strAttributeValue = ElementValue.getAttribute(p_strAttributeName)

但是,我现在处于XML看起来如下的情况:

<parent>
<child code="REWC" curr="PLN" amt="1000"/>
<child code="xxxx" curr="EUR" amt="1500"/>
<child code="yyyy" curr="GBP" amt="1700"/>
</parent>

是否有一种简单的方法来遍历每个属性,获取值,然后我可以用它做一些事情。 我正在寻找类似的东西:

.getAttribute(code)[0]
.getAttribute(code)[1]
.getAttribute(code)[2]

上述内容将打印出所有属性的所有值。但我不确定如何在属性级别进行索引。

任何帮助都会很棒。我正在使用VBScript与Microsoft XMLDom。

1 个答案:

答案 0 :(得分:0)

好的,我现在通过执行for循环来解决这个问题 覆盖所有已返回的元素,然后读入每个属性。 如果属性与我要查找的属性匹配,那么我退出for循环。

如果有更好的方法,那么请分享任何答案,同时我的 代码工作如下。

代码段:

Set Data = m_objXmlDom.getElementsByTagName(".//Txn[" & p_intIndex & "]/" & p_strElementName & "/" & p_strSubElementName & "")

'loop through each one
For Each DataItem in Data
    strTemp1 = DataItem.getAttribute("code")
    strTemp2 = DataItem.getAttribute("curr")
    strTemp3 = DataItem.getAttribute("amt")

    If strTemp1 = strExpectedValue Then
        'set the values
        m_strTemp1 = strTemp1 
        m_strTemp2 = strTemp2 
        m_strTemp3 = strTemp3 
        'set pass flag
        blnDataFound = True
        Exit For
    End If
Next