Toon posts:

[ASP / XML] elementen afzonderlijk uitlezen

Pagina: 1
Acties:
  • 138 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Heb al een tijdje zitten spelen om XML aan te lezen in ASP maar kom toch niet uit twee zaken:
  • Hoe roep ik een URL aan die XML als resultaat heeft? Dus www.domein.nl/domein.asp?domein=tweakers&tld=net
  • Hoe kan ik ieder afzonderlijk element gebruiken in ASP? Ik ken getElementsByTagName maar hoe krijg ik die in een variabele zodat ik daarmee kan rekenen of andere zaken mee kan doen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat betreft je eerste vraag: die snap ik niet echt. Wat wil je nu weten? Hoe je een XML-pagina aanmaakt op basis van een querystring? Of hoe je en XML-pagina ophaalt die met een querystring opgebouwd wordt?

Voor wat betreft je tweede vraag:
Returns an XmlNodeList containing a list of all descendant elements that match the specified name.
Het lijkt me dat je daarmee genoeg info zou moeten hebben om op weg te kunnen? :)

Overigens, voor zover ik zo snel kan zien is getElementsByTagName een .NET method, gebruik je nu ASP of ASP.NET?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 20-04 18:20
Als je ASP.NET gebruikt, dan kan je mbhv een XmlDocument de xml gaan laden door gebruik te maken van de Load method.
Je geeft dan gewoon de URI mee.

code:
1
2
XmlDataDocument doc = new XmlDataDocument();
doc.Load ("http://tweakers.net/feeds/mixed.xml");


Met GetElementsByTagName kan je aan de slag, maar, je kan ook mbhv xpath queries op je XmlDataDocument loslaten. Kijk daarvoor eens naar CreateNavigator, de XPathNavigator class en de XPathNodeIterator class.

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-04 12:54

Jaspertje

Max & Milo.. lief

Als je classic ASP gebruikt kan je misschien een XMLHTTP gebruiken om XML in te laden van een externe partij (http://www.4guysfromrolla.com/webtech/110100-1.shtml) of 'gewoon'

ASP:
1
2
3
set XML = server.createobject("MSXML2.DomDocument")
    XML.Load(URL) 'Methode om een XML document in te laden
    XML.LoadXML(string) 'Methode om een XMLString in te laden



Voor je 2e punt kan je Beter XPath gebruiken (SelectNodes en SelectSingleNode).
ASP:
1
2
3
4
 set elements = XML.SelectNodes("//ELEMENTS") 'Alle ELEMENTS nodes
for each element in Elements
  response.write Elements.getAttribute("waarde")
next


Zoek ook wat tutorials over XPath en XML en ASP..die zijn vaak wel duidelijk

offtopic:
Dit topic was niet genoeg? [rml][ ASP] XML gebruiken in een ASP pagina*[/rml]

[ Voor 38% gewijzigd door Jaspertje op 02-01-2006 21:34 ]


Verwijderd

Topicstarter
De informatie die wordt aangeleverd heeft te maken met een postcode tool. Via de onderstaande code kan ik alles wel parsen en ook wel via:

code:
1
2
3
for each element in Elements
  response.write Elements.getAttribute("waarde")
next


maar ik wil graag slechts één element uit de XML file pakken. De file is zo opgebouwd:

<info>
<specificatie>
<provincie>
<straat>
</specificatie>
</info>

(er staan bij info wel meer tags.. deze heeft wel zin dus :))

Wat ik nu heb...

code:
1
2
3
4
5
6
url = "http://www.xxxxxxx.asp?postcode=xxxxAB&housenumber=XX&xml=1" 
set xmlhttp = CreateObject("Microsoft.XMLHTTP") 
xmlhttp.open "GET", url, false 
xmlhttp.send "" 
response.write xmlhttp.responseText
set xmlhttp = nothing


En ik wil zoiets als: response.write xslhttp.Response("provincie")

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-04 12:54

Jaspertje

Max & Milo.. lief

Je had dus gewoon meoten zoeken op Xpath...(http://www.w3schools.com/xpath/default.asp of http://www.experts-exchan...uages/ASP/Q_20779017.html (over XMLHTTP)) Hier kan je alles in het vervolg vinden wat je moet weten. Wat je nu kan doen is:
gaat RobIII uitleggen :)
De XML die je terugkrijgt in een XMLDom laden en daarmee verder gaan, zover ik nu kan zien kan XMLHTTP dit niet (correct me if im wrong)

[ Voor 4% gewijzigd door Jaspertje op 03-01-2006 08:49 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jaspertje schreef op dinsdag 03 januari 2006 @ 08:35:
De XML die je terugkrijgt in een XMLDom laden en daarmee verder gaan, zover ik nu kan zien kan XMLHTTP dit niet (correct me if im wrong)
You're wrong ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Heb volgende heb ik al gebakken en het werkt:
code:
1
2
3
4
5
6
7
8
9
10
11
<%
set objxml=server.createobject("microsoft.XMLDOM")
objxml.load(server.mappath("page.xml"))
set sheet=objxml.documentElement
set provincie=objbalsheet.selectsinglenode("//specificatie/provincie")
set straat=objbalsheet.selectsinglenode("//specificatie/straat")
strProvincie=provincie.text
strStraat=straat.text
response.write strProvincie
response.write strStraat
%>


Maar nu moet page.xml vervangen door een URL; dus zoiets:
code:
1
2
3
4
5
6
7
8
<%
url = "http://domein.com/ligging.asp?postcode=1234XX&housenumber=XX&xml=1" 
set xmlhttp = CreateObject("Microsoft.XMLHTTP") 
    xmlhttp.open "GET", url, false 
    xmlhttp.send "" 
    response.write xmlhttp.responseText
set xmlhttp = nothing 
%>


Hoe kan ik nu de informatie opvragen? 'selectsinglenode' lijkt niet te bestaan in de XMLHTTP

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 17-04 11:22

TeeDee

CQB 241

Als je nu eens xmlhttp.responseText uit je 2e stukje code aan obkxml.LoadXml() van je eerste code voert?

En anders, (pik je ook gelijk wat controle mee) sla je je responseText op als file, en laad je die in?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op dinsdag 03 januari 2006 @ 16:31:
Als je nu eens xmlhttp.responseText uit je 2e stukje code aan obkxml.LoadXml() van je eerste code voert?

En anders, (pik je ook gelijk wat controle mee) sla je je responseText op als file, en laad je die in?
Dat heb ik ook al geprobeerd, fout: The data necessary to complete this operation is not yet available.

Ben ik aan het onderzoeken
Pagina: 1