webForumDet fria alternativet

Läsa XML med ASP!

ASPur ASP

6 svar · 498 visningar · startad av Alamartimo

Medlem sedan okt. 2004129 inlägg
Frågan#1

Fick hjälp för ett tag sen och skulle nu utöka en avläsning av en *.xml fil men lyckas inte få ut rätt info.

XML filen ser ut som nedan (inte hela filen):

<Driver>
  <Name>Hannu Alamartimo</Name> 
      <Lap num="1" p="2" et="41.1626" s1="38.4769" s2="25.5597" s3="38.2476">102.2843</Lap> 
  <Lap num="2" p="1" et="143.4469" s1="30.0901" s2="24.7693" s3="36.7172">91.5767</Lap> 
  <Lap num="3" p="1" et="235.0236" s1="30.1641" s2="24.5596" s3="36.2182">90.9420</Lap> 
    </Driver>
<Driver>
  <Name>Markus Tynkkynen</Name> 
  <Lap num="1" p="1" et="41.1626" s1="37.8438" s2="24.9702" s3="38.3765">101.1905</Lap> 
  <Lap num="2" p="2" et="142.3531" s1="30.5049" s2="24.6825" s3="41.9671">97.1544</Lap> 
  <Lap num="3" p="2" et="239.5076" s1="30.5111" s2="24.9456" s3="36.6606">92.1174</Lap>

Jag har denna kod som jag redan tar ut <Name> och några andra taggar som jag inte har med ovan.

for each driverNode in xmlDoc.SelectNodes("//Race/Driver")

'här är raden som läser in i databasen
'koden som används: GetValue(driverNode,"Name","")

next

function GetValue(xmlNode,nodeName,defaultValue)
	set subNode=xmlNode.SelectSingleNode(nodeName)
	if not subNode is nothing then
		GetValue=subNode.text
		exit function
	end if
	GetValue=defaultValue
end function

Jag kan få den att lista Namnen ex:

Hannu
Markus

Men när jag kommer till delarna <Lap....> så kommer samtliga varv under båda namnen. Vill ha så att de 3 varven (detta är olika från gång till gång) som här till respektive namn hamnar rätt så att säga.

Dessa värden ska sen in i databasen (MySQL) där varje Lap har namnet i sig också. Det är klart med de andra delarna men nu vill ja ha in:

Namn | s1 | s2 | s3 | Lap i en ny tabell.

Har pulat med det här i dagar nu. Hoppas någon har tid och ork :)

Medlem sedan dec. 19996 721 inlägg
#2

Misstänker att du selectar Lap-noderna från fel ställe

for each lapNode in [b]driverNode[/b].SelectNodes("Lap")

next
Medlem sedan okt. 2004129 inlägg
#3

Nja koden jag har skrivit ovan fungerar på <Name> taggen och några andra taggar som jag inte skrivit med.

Eller missförstod jag dig nu kanske?

I alla fall, använder jag

GetValue(driverNode,"Lap","")

Så får jag ut första <Lap....> värdet. på rätt <Name>värde

Kör jag en

For i = 1

så radar den upp alla <Lap..>värden under alla <Name>värden..

Men sen vill jag ha ut attributen s1, s2 och s3 också.

Rörigt kanske? :e

Medlem sedan okt. 2004129 inlägg
#4

Ahh så var det ju. En bit på vägen. Rätt Emission

Nu får jag fram <Lap>värdena rätt. Nu är det bara attributen s1="VÄRDE" och s2="VÄRDE" och s3="VÄRDE" värdena som jag också vill ha ut.

koden ser ut så här nu.

for each driverNode in xmlDoc.SelectNodes("//Race/Driver")

Response.Write GetValue(driverNode,"Name","")

for each lapNode in driverNode.SelectNodes("Lap")

Response.Write lapNode.Text

'här är raden som läser in i databasen
'koden som används: GetValue(driverNode,"Name","")

next
next

function GetValue(xmlNode,nodeName,defaultValue)
	set subNode=xmlNode.SelectSingleNode(nodeName)
	if not subNode is nothing then
		GetValue=subNode.text
		exit function
	end if
	GetValue=defaultValue
end function
Medlem sedan okt. 2004129 inlägg
#5

Fixade det. :)

Gjorde så här:

for each driverNode in xmlDoc.SelectNodes("//Race/Driver")
strNamn =  GetValue(driverNode,"Name","")

for each lapNode in driverNode.SelectNodes("Lap")
strLaptime = lapNode.Text 
next

for each lapNode in driverNode.SelectNodes("Lap")
strLnum = lapNode.getAttribute("num")
strP = lapNode.getAttribute("p")
strS1 = lapNode.getAttribute("s1")
strS2 = lapNode.getAttribute("s2")
strS3 = lapNode.getAttribute("s3")

' här petar jag in allt i databasen

next

function GetValue(xmlNode,nodeName,defaultValue)
	set subNode=xmlNode.SelectSingleNode(nodeName)
	if not subNode is nothing then
		GetValue=subNode.text
		exit function
	end if
	GetValue=defaultValue
end function
Medlem sedan dec. 19996 721 inlägg
#6

Bra. Du behöver inte loopa igenom Lap-noderna två gånger...

Medlem sedan okt. 2004129 inlägg
#7

Det har du ju rätt i. (y)

269 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
142 ms — hämta forumlista (db)
125 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)