/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Parsing XML-data i asp.... hjælp !
Fra : Jon Klose Larsen


Dato : 28-01-06 14:38

Hej

Jeg et lille problem, som jeg håber en af jer kan hjælpe med at løse.

Jeg har en asp-side, som henter nogle data på en anden server.
Dette gør jeg med følgende kode (url udeladt af sikkerheds grunde):

********************
set oSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
oSrvHTTP.open "GET","URL", false
oSrvHTTP.send

get_euroroute_fp = oSrvHTTP.ResponseText
set oSrvHTTP = nothing
********************
Denne del virker og I kan se et eksempel på data nederst.


Mit problem er nu, hvordan jeg får enkelte af felterne udskrevet, f.eks.
<dep>, <arr> og <route>?

Hvad gør jeg hvis der er flere objekter i data... (i eksemplet er der kun et
object - se <num_object>, men der kan være flere) ?

Jeg har prøvet at lede på nettet og har læst en del om XML. Jeg har også
prøvet diverse eksempler, men ingen ser ud til at virke, så hvis du har et
virkende eksempel, eller kan vise det med mine data, så vil det glæde mig
meget.

På forhånd tak for hjælpen

Jon


********XML Eksempel data**************
<?xml version="1.0"?>
<flightplans>
<result>
<version>1</version>
<num_objects>1</num_objects>
<result_code>200</result_code>
</result>
<flightplan source='EUroute' id='397d182ee5a172f721e36e2725015036'>
<short_name>EUroute</short_name>
<full_name>EUroute Flight Plan Database</full_name>
<logo>euroute_logo.png</logo>
<link></link>
<contact></contact>
<dep>EKCH</dep>
<arr>EKYT</arr>
<trans_alt_dep>0</trans_alt_dep>
<trans_alt_arr>0</trans_alt_arr>
<min_fl>50</min_fl>
<max_fl>240</max_fl>
<dep_proc />
<arr_proc />
<route>MIRGO T506 NORTI L621 AAL</route>
<full_route>MIRGO T506 NORTI L621 AAL</full_route>
<last_change>20060125081827</last_change>
<flags />
<comments />
<distance type="route">134</distance>
<class>0</class>
</flightplan>
</flightplans><br><br>
**********************



 
 
terje (28-01-2006)
Kommentar
Fra : terje


Dato : 28-01-06 16:20

Jon Klose Larsen wrote:
> Mit problem er nu, hvordan jeg får enkelte af felterne udskrevet, f.eks.
> <dep>, <arr> og <route>?

Hva med noe á la dette:

Set oNodeList = oXMLDoc.selectNodes("/flightplans/flightplan")

For Each oNode In oNodeList
Response.Write oNode.selectSingleNode("dep").Text
Next

terje

Jon Klose Larsen (29-01-2006)
Kommentar
Fra : Jon Klose Larsen


Dato : 29-01-06 12:00


"terje" <late@night.zz> skrev i en meddelelse
news:441ge7F1pr2vtU1@individual.net...
> Jon Klose Larsen wrote:
>> Mit problem er nu, hvordan jeg får enkelte af felterne udskrevet, f.eks.
>> <dep>, <arr> og <route>?
>
> Hva med noe á la dette:
>
> Set oNodeList = oXMLDoc.selectNodes("/flightplans/flightplan")
>
> For Each oNode In oNodeList
> Response.Write oNode.selectSingleNode("dep").Text
> Next
>
> terje


Hej Terje

Dit forslag var lige det som skulle til, for at hjælpe mig på vej.
Nu har jeg fået det til at virke (se mit script nedenfor).

Jeg har dog et par ekstra spørgsmål.....

I mit script vises alle "nodes", men hvordan skal jeg gøre for kun at
udvælge en "node" (f.eks. nr. 2 af 5) ?

Og hvor kan jeg finde info om mulige parameter når jeg bruger "nodes" (som
f.eks. "selectSingleNode" eller "attributes")

Jon


********************************
Dim oXML, oXMLError, ReturnValue, x
Set oXML = Server.CreateObject("MSXML2.DOMDocument")
oXML.async = False
oxml.setProperty "ServerHTTPRequest", true
ReturnValue = oXML.Load("URL")

If ReturnValue = False Then
Response.Write oxml.parseError.reason
Else
Set oNodeList = oXML.selectNodes("/flightplans/result")
For Each oNode In oNodeList
Response.Write "Number of flightplans: " &
oNode.selectSingleNode("num_objects").Text
Response.Write"<br><br>"
Next
Set oNodeList = oXML.selectNodes("/flightplans/flightplan")
For Each oNode In oNodeList
Response.Write oNode.selectSingleNode("dep").Text & " - "
Response.Write oNode.selectSingleNode("arr").Text & " - "
Response.Write oNode.selectSingleNode("route").Text & " "
Response.Write oNode.selectSingleNode("distance").Text & " Nm "
Response.write "<a target='_blank' href='" &
oNode.selectSingleNode("link").Text & "'><img border='0' src='" &
oNode.selectSingleNode("logo").Text & "'></a>" & " "
Response.Write "ID: " & oNode.attributes(1).value
Response.Write"<br><br>"
Next
Set oXML = Nothing
End If

********************************



terje (29-01-2006)
Kommentar
Fra : terje


Dato : 29-01-06 14:38

Jon Klose Larsen wrote:

> I mit script vises alle "nodes", men hvordan skal jeg gøre for kun at
> udvælge en "node" (f.eks. nr. 2 af 5) ?

Jeg er ikke sikker på hva du mener. Du kan søke etter noder med bestemte
attributter:

<flightplan id="999">

For å finne alle noder der id = "999" så kan du gjøre noe som dette:

sId = "999"

"/flightplans/flightplan[@id='" & sID & "']"

> Og hvor kan jeg finde info om mulige parameter når jeg bruger "nodes" (som
> f.eks. "selectSingleNode" eller "attributes")

Du bør Google etter asp+xml eller kanskje visual basic+xml, det finnes
utallige eksempler der ute. microsoft.public.xml er også et godt sted å
søke.

terje

Jens Gyldenkærne Cla~ (28-01-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-01-06 23:52

Jon Klose Larsen skrev:

> Mit problem er nu, hvordan jeg får enkelte af felterne
> udskrevet, f.eks. <dep>, <arr> og <route>?

Prøv at se tråden "Manglende billede fra rss-feed" - her har vi
lige haft nogenlunde samme problemer.

Du kan se en mulig løsning her
<http://gyros.dk/usenet/asp/rsstest.asp>
(kilde: <http://gyros.dk/usenet/asp/rsstest.txt>

Eksemplet drejer sig om at trække data ud fra et rss-feed, men
teknikken du skal bruge er nok den samme.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste