F fedde Medlem sedan dec. 1999 137 inlägg Frågan 27 aug. 2013 10:11 #1 Jag behöver plocka ut consignmentId och orderNo från nedan XML. Men jag får inte till det.
XML:
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns4:bookResponse xmlns:ns2="http://www.x.com/consignment/types/v1_0" xmlns:ns3="http://www.x.com/common/webservice/types/v1_0" xmlns:ns4="http://www.x.com/consignment/types">
<result>
<consignments consignmentId="137600459735850de1903" orderNo="fe990255">
Det börjar ju med
Dim xmlDoc, fil
set xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0")
xmlDoc.async="false"
fil=Server.mappath("testa.xml")
xmlDoc.load(fil)
Dim root
Set root = xmlDoc.documentElement
Sedan har jag provat flera sätt men inget funkar för mig. Bl.a:
Set objNamedNodeMap = xmlDoc.documentElement.childNodes(4)
intConsignmentId = objNamedNodeMap.attributes.getNamedItem("consignmentId").text
response.write intConsignmentId
Förslag?
Du kan använda dig av XPath kanske, kan tycka det är lite enklare att jobba med:
xmlDoc.setProperty "SelectionLanguage", "XPath"
och använd
xmlDoc.selectSingleNode("//result/consignments/@consignmentId")
så borde du få ut consignements sen om det är text eller attribute du vill använda dig av så få du nog ändra koden lite.
F fedde Medlem sedan dec. 1999 137 inlägg Tackar!
Nu fick jag ihop två fungerande varianter :-)
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
'xmlDoc.load(Server.MapPath("svar.xml")) 'Om XML i fil
xmlDoc.loadXML(xmlhttp.responseText) 'Om XMLretur via t.ex. SOAP
xmlDoc.setProperty "SelectionLanguage", "XPath"
Dim strConsignmentId, strOrderNo
strConsignmentId = xmlDoc.selectSingleNode("//consignments/@consignmentId").text
strOrderNo = xmlDoc.selectSingleNode("//consignments/@orderNo").text
response.write "<br>strConsignmentId: " & strConsignmentId & VbCrLf
response.write "<br>strOrderNo: " & strOrderNo & VbCrLf
Set xmlDoc = Nothing
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
'xmlDoc.load(Server.MapPath("svar.xml")) 'Om XML i fil
xmlDoc.loadXML(xmlhttp.responseText) 'Om XMLretur via t.ex. SOAP
xmlDoc.setProperty "SelectionLanguage", "XPath"
Dim data, strConsignmentId, strOrderNo
set data = xmlDoc.selectSingleNode("//result/consignments")
strConsignmentId = data.attributes.getNamedItem("consignmentId").text
strOrderNo = data.attributes.getNamedItem("orderNo").text
response.write "<br>strConsignmentId: " & strConsignmentId & VbCrLf
response.write "<br>strOrderNo: " & strOrderNo & VbCrLf
Set data = Nothing
Set xmlDoc = Nothing
Tack så rackarns mycket! :bire