我正在尝试查询XML文件以获取特定元素的属性值。
当元素具有唯一的属性集时,这可以正常工作,例如
<parent>
<child code="REWC" curr="PLN" amt="1000"/>
</parent>
为了查询上面我使用:
代码段:
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。
答案 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