myXML= "<?xml version=1.0 encoding=iso-8859-1 ?>" & vbcrlf & _
"<shippingRates code=fedex >" & vbcrlf & _
"<errorMsg>" & vbcrlf & _
"Sorry, no rates returned." & vbcrlf & _
"</errorMsg>" & vbcrlf & _
"</shippingRates>" & vbcrlf & _
"<shippingRates code=CUSTOM >" & vbcrlf & _
"<shippingRate index=0 >" & vbcrlf & _
"<TotalRate>0.29</TotalRate>" & vbcrlf & _
"<HandlingFee>0.00</HandlingFee>" & vbcrlf & _
"<DisplayHandlingFeeOpt>1</DisplayHandlingFeeOpt>" & vbcrlf & _
"<shippingMethod>shipping option 1 </shippingMethod>" & vbcrlf & _
"</shippingRate>" & vbcrlf & _
"<shippingRate index=1 >" & vbcrlf & _
"<TotalRate>2.91</TotalRate>" & vbcrlf & _
"<HandlingFee>43.69</HandlingFee>" & vbcrlf & _
"<DisplayHandlingFeeOpt>1</DisplayHandlingFeeOpt>" & vbcrlf & _
"<shippingMethod>shipping option 2 </shippingMethod>" & vbcrlf & _
"</shippingRate>" & vbcrlf & _
"</shippingRates>" & vbcrlf
Dim oXML: Set oXML = Server.CreateObject("Microsoft.XMLDOM")
oXML.loadXML(myXML) 'to load from string directly
Based on the xml Pattern scenario study.
I would like to achieve the following:
read if the node is ‘fedex’
if yes, then count how many node exist
if count>0, then loop into to get value of each node inside (eg: shippingMethod, TotalRate)
if count=0, do nothing.
read if the node is ‘CUSTOM’
if yes, then count how many inside
if count>0, then loop into to get value of each node inside (eg: shippingmethod, TotalRate)
if count=0, do nothing.
iItem= 0
set shippingRates_node = oXML.getElementsByTagName("shippingRates")
for each itemNodes in shippingRates_node(0).ChildNodes
set shippingRate_node = oXML.getElementsByTagName("shippingRate")
if code= "fedex" then
how to count?
if count>0 then
for each item in itemNodes.ChildNodes
if item.nodeName = "shippingMethod" Then
strItemLine= strItemLine & "&" & Server.URLEncode("L_SHIPPINGOPTIONNAME" & iItem) & "=" & Server.URLEncode(item.Text)
end if
if item.nodeName = "shippingRate" Then
strItemLine= strItemLine & "&" & Server.URLEncode("L_SHIPPINGOPTIONAMOUNT" & iItem) & "=" & Server.URLEncode(item.Text)
end if
next
iItem= iItem + 1
end if
end if
if code= "CUSTOM" then
how to count?
if count>0 then
for each item in itemNodes.ChildNodes
if item.nodeName = "shippingMethod" Then
strItemLine= strItemLine & "&" & Server.URLEncode("L_SHIPPINGOPTIONNAME" & iItem) & "=" & Server.URLEncode(item.Text)
end if
if item.nodeName = "shippingRate" Then
strItemLine= strItemLine & "&" & Server.URLEncode("L_SHIPPINGOPTIONAMOUNT" & iItem) & "=" & Server.URLEncode(item.Text)
end if
next
iItem= iItem + 1
end if
end if
Next
TotalShippingOptions= iItem
Anyone know a complete solution to this?
Lets assume you’ve tidied up that XML so that it has containing root node and the attribute values are enclosed in “”. My guess is this is what you are really after:-
From the code you provided there was no actual disctinction between Fedex and CUSTOM hence th code is significantly simplified.