webForumDet fria alternativet

Hämta attribut från xml

ASPur ASP

2 svar · 1 738 visningar · startad av fedde

Medlem sedan dec. 1999137 inlägg
Frågan#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?

Medlem sedan juni 20019 519 inlägg
#2

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.

Medlem sedan dec. 1999137 inlägg
#3

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

138 ms totalt · 3 externa anrop · v20260731065814-full.9823c0c5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)