Misstänker att du selectar Lap-noderna från fel ställe
for each lapNode in [b]driverNode[/b].SelectNodes("Lap")
next
6 svar · 498 visningar · startad av Alamartimo
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 :)
Misstänker att du selectar Lap-noderna från fel ställe
for each lapNode in [b]driverNode[/b].SelectNodes("Lap")
next
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
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
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
Bra. Du behöver inte loopa igenom Lap-noderna två gånger...
Det har du ju rätt i. (y)