Avatar billede troelsm Nybegynder
06. februar 2010 - 10:42 Der er 9 kommentarer og
1 løsning

Hente XML data ok - men hvordan looper jeg igennem data

jeg har hentet noget data (XML) med
xml.Open "GET",
xml.Send

Det jeg helst vil er at lave et loop som løber igennem xml,
Struktur i xml er som nedenstående:
Det jeg skal have fat i er værdien i pda mac og det som står i data 1 (resten i posten skal jeg ikke bruge.

  <?xml version="1.0" encoding="utf-8" ?>
- <pdas>
- <pda mac="001a6b907adb">
  <lastget>DATA 1</lastget>
  <last_ip_from>DATA 2</last_ip_from>
  <last_valid_id />
- <online_name>
- <![CDATA[
  ]]>
  </online_name>
  </pda>
- <pda mac="001a6b984d93">
  <lastget>DATA 1</lastget>
  <last_ip_from>DATA 2</last_ip_from>
  <last_valid_id />
- <online_name>
- <![CDATA[
  ]]>
  </online_name>
  </pda>
- <pda mac="00247ee8708e">
  <lastget>DATA 1 </lastget>
  <last_ip_from>DATA 2</last_ip_from>
  <last_valid_id>DATA 3</last_valid_id>
- <online_name>
- <![CDATA[ DATA 4
  ]]>
  </online_name>
  </pda>
  </pdas>


Alternativt lave XML om til en almindelig tekst streg som jeg så kan søge i
Avatar billede mortvader Nybegynder
06. februar 2010 - 11:18 #1
måske noget i den her retning?


Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
objXML.Loadxml (xmldok)
If objXML.parseError.errorCode <> 0 Then
  response.write "den gik ikke"
  response.end
End If

Set objLst=objXML.selectnodes("pdas/pda")
for each obj in objlst
  response.write obj.attributes.getnameditem("mac").nodevalue
next
set objLst=nothing
Avatar billede troelsm Nybegynder
06. februar 2010 - 11:40 #2
Ser forbuftigt ud - men hvordan kommer jeg
herfra
  xml.Send
hertil
  Set objXML = Server.CreateObject("Microsoft.XMLDOM")
  objXML.async = False
  objXML.Loadxml (xml)

ovenstående giver følgende fejl
  Microsoft VBScript runtime error '800a000d'
  Type mismatch: 'objXML.Loadxml'

men XML er jo XML men vil ikke loade ind i XMLDOM,
men fejlkoden er jo type mismatch??
Avatar billede mortvader Nybegynder
06. februar 2010 - 12:15 #3
objXML.Loadxml (xml)

xml variablen skal indeholde selve xml dokumentet
det er måske xml.responsebody eller sådan et eller andet.
Hvad er det for et objekt du bruger der.. det du kalder xml?
Avatar billede troelsm Nybegynder
06. februar 2010 - 12:29 #4
Hej
det er hentet fra en hjemmeside
(og blot for et tilfældes skyld, jeg har lov til at hente de pågældende data),
så min kode ser sådan ud.

Response.Buffer = True
Dim objXMLHTTP, xml

Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://URL/pda.php", false
xml.Send
Avatar billede mortvader Nybegynder
06. februar 2010 - 12:34 #5
prøv med

objXML.Loadxml (xml.responsetext)

eller

objXML.Loadxml (xml.responsebody)
Avatar billede mortvader Nybegynder
06. februar 2010 - 12:41 #6
altså noget i den her stil

Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://URL/pda.php", false
xml.Send

Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False

objXML.Loadxml (xml.responsetext)

If objXML.parseError.errorCode <> 0 Then
  response.write "den gik ikke"
  response.end
End If

Set objLst=objXML.selectnodes("pdas/pda")
for each obj in objlst
  response.write obj.attributes.getnameditem("mac").nodevalue
next
set objLst=nothing
Avatar billede troelsm Nybegynder
06. februar 2010 - 12:52 #7
resonsetext virkede,
enenste problem jeg har tilbage nu er at få værdien af
lastget ud,

dette giver mig værdierne af PDA MAC
Set objLst=objXML.selectnodes("pdas/pda")
for each obj in objlst
  response.write obj.attributes.getnameditem("mac").nodevalue
next

men jeg mangler den tilhørende lastget værdi
Avatar billede mortvader Nybegynder
06. februar 2010 - 13:01 #8
jeg har ikke testet noget, men prøv noget i den her stil:

Set objLst=objXML.selectnodes("pdas/pda")
for each obj in objlst
  response.write "MAC:"&obj.attributes.getnameditem("mac").nodevalue&"<br>"

  for each ch in obj.childnodes
    if ch.nodename="lastget" then
      response.write "lastget:"&ch.nodevalue&"<br>"
    end if
  next
next
Avatar billede troelsm Nybegynder
06. februar 2010 - 14:02 #9
Hej
Det var næsten korrekt, men godt nok til at jeg har fået det til at virke.
Der skulle stå : ch.text
i stedet for ch.nodevalue

smid et svar så dropper jeg point
Avatar billede mortvader Nybegynder
06. februar 2010 - 14:59 #10
held & lykke med det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester