遍历XML数据的问题 - VBScript方式

时间:2009-09-02 10:28:01

标签: xml vbscript traversal

示例XML:

<cart subTotal="USD 3.50" >

    <item productSubTotal="3.50" >
        <pkProductItem>241</pkProductItem>
        <itemCode>23455-green-XL</itemCode>
        <itemName>my product ( green - XL-size )</itemName>
        <qty>1</qty>
        <itemUnitPrice>3.50</itemUnitPrice>
        <totalItemPrice>3.50</totalItemPrice>
    </item>

    <item productSubTotal="9.90" >
        <pkProductItem>123</pkProductItem>
        <itemCode>23455-green-XL</itemCode>
        <itemName>my product ( red - L-size )</itemName>
        <qty>1</qty>
        <itemUnitPrice>9.90</itemUnitPrice>
        <totalItemPrice>9.90</totalItemPrice>
        <options> </options>
    </item>

</cart>

<finalTotalValue>3.50</finalTotalValue>

Dim myXML: myXML= <the full xml string above>

注意:上面的XML数据是使用字符串连接生成的。 上述XML数据不是从XML文件加载的。

生成后,如何使用ASP VBScript遍历读取数据?

  1. 如何检索<finalTotalValue>

    Dim oXML, URI
    Set oXML = Server.CreateObject("MSXML2.DomDocument")
    oXML.loadXML(objXMLhttp.responseText)
    URI = oXML.selectSingleNode("//itemCode").text
    
  2. 这似乎不起作用。

    1. 如何使用for循环检索购物车内的商品? <cart>内可以有多个项目。

    2. 如何检索标签内的值?例如:<item productSubTotal="9.90" > 我希望通过循环购物车XML中的产品获得9.90。

    3. 我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

This tutorial应该有帮助。

要循环浏览购物车,您可以执行以下操作:

totalcost = 0
set Cart_node = oXML.getElementsByTagName("cart")
' Loop through the cart node
for each itemNodes in Cart_node(0).ChildNodes
    ' get the product sub total from each item node
    productSubTotal = itemNodes.getAttribute("productSubTotal")
    ' Loop through each item node
    for each item in itemNodes.ChildNodes
        ' if the node name is "totalItemPrice" add the value to the totalcost
        if item.nodeName = "totalItemPrice" Then
            totalcost = totalcost + item.Text
        end if
    Next
Next
' totalcost will be the total of all values in totalItemPrice nodes.

您可以像这样检索finalTotalValue

set final = oXML.getElementsByTagName("finalTotalValue")
finalTotalValue = final(0).text