Jump to content
  • 0

Adres opzoeken nav postcode en huis nr. via XML


Barend Warnaars

Question

Ondanks vele uren zoeken snap ik nog niks van XML en het gebruik hiervan met filemaker, vandaar dat ik julle hulp vraag.

 

Wat ik graag zou willen maken is een database die als je een postcode en huisnr intoets er standaard het adres en plaats ( en evt meer gegevens) bijzoekt. Ik kwam een site tegen waar men deze data gratis online aanbied http://kvdb.net/projects/6pp/

 

Wie kan het voorbeeld database'je voorzien van een script wat de geretourneerde gegevens verwerkt bij het record van waaruit je dit opvraagd?

 

Zelf werk ik met Filemaker Pro Adv. 9.0 V3 onder windows.

 

Met vriendelijk groet,

 

Barend Warnaars

Link to comment

11 answers to this question

Recommended Posts

  • 0

he Barend,

 

het is niet nodig om te importeren als je "on the fly" dit wil opzoeken. Ik maak gebruik van de custom function: xmlGet om dit te verwezenlijken.

 

Die customfunction gaat kijken in een xml structuur of een bepaalde tag bestaat, en geeft dan zijn waarde terug.

 

In jouw voorbeeld krijg je van de pagina dus de volgend xmlstructuur terug:

 



Jacobus Deckersstraat
5616JR
Eindhoven
51.438081
5.463004
street


 

In dit geval zal dus xmlGet ( _xml ; "city" ) de waarde Eindhoven teruggeven.

 

Komt het er nog op neer om dus _xml te definieren. Dit gaat perfect met de webviewer. Laad de URL (met ingevulde parameters) in de webviewer, met de functie GetLayoutObjectAttribute verkrijg je zijn bron, sla die op als variabele ( bijvoorbeeld $xml ) en dan met xmlGet ( $xml ; "city" ) krijg je "Eindhoven" als resultaat.

 

Ik zou graag een voorbeeld posten, maar ik vind nergens die knoppen meer...

 

In ieder geval: hier is xmlGet ( _xml ; _tag ) te downloaden: http://www.fmcustomfunctions.com/fid/110

 

Veel succes

Link to comment
  • 0


 

<?xml version="1.0" ?>





-

<result>




-

<item>




 

<city>Volkel</city>





 

<geo_lat>51.644251</geo_lat>





 

<geo_long>5.654823</geo_long>





 

<geo_precision>street</geo_precision>





 

<postcode>5408RR</postcode>





 

<street>Breestraat</street>



 

</item>






-

<item>




 

<city>Volkel</city>





 

<geo_lat>51.64474</geo_lat>





 

<geo_long>5.651659</geo_long>





 

<geo_precision>street</geo_precision>





 

<postcode>5408XA</postcode>





 

<street>Reestraat</street>



 

</item>






-

<item>




 

<city>Volkel</city>





 

<geo_lat>51.64474</geo_lat>





 

<geo_long>5.651659</geo_long>





 

<geo_precision>street</geo_precision>





 

<postcode>5408XB</postcode>





 

<street>Reestraat</street>



 

</item>




 

</result>




Link to comment
  • 0

Beste Andries en Jeroen,

 

Alvast bedankt voor jullie tips. Ik wou hier vandaag mee aan de slag echter blijkt genoemde site met de adressen uit de lucht te zijn.. jammer.

Wel even gespeeld met de functie xmlget en de plugin zoals door Jeroen voorgesteld. Pfff toch wel een complexe materie. Wel erg leuk om me verder in te verdiepen.

 

Andries.. ik zag dat je via het gebruikerspaneel prive berichten kan sturen. Hier kan je dan wel een bestand oploaden. Graag zou ik van jou zo'n voorbeeld ontvangen hoe jij het hebt opgelost.

 

Prettige dagen verder en wellicht tot later.

 

Barend

Link to comment
  • 0

he jeroen

 

als je het volgende doet: GetLayoutObjectAttribute ( "webviewer" ; "source" ) , krijg je enkel en alleen de xml structuur terug, die je wel weer mooi kunt gebruiken.

 

Heb jullie beide in PM mijn bestandje doorgestuurd.

 

Groetjes

 

Andries

 

ps: heb wel mijn twijfels over de betrouwbaarheid van de site, want soms werkt hij wel, en soms niet... is dus niet handig om in een applicatie in te bouwen. Op dit moment werkt hij niet.

Link to comment
  • 0

Andries,

 

Weet je zeker dat als je als attributeName argument in GetLayoutObjectAttribute "source" specifieert, dat je dan de XML terugkrijgt?

- Volgens de Help krijg je met "source" enkel de huidige URL vande webviewer terug, en met "content" de *broncode*

- In je voorbeeldscript gebruik je "content" ipv "source" ?!

 

Aangezien ik ook blijkbaar geen bestanden kan uploaden, stuur ik je een testbestand in PM... De webviewer opent een test XML bestand op de gespecifieerde locatie, de webserver geeft text/xml terug....

 

Jammer genoeg is die postcode site down, hopelijk geen juridische problemen...

Link to comment
  • 0

even een samenvatting van enkele pm berichten voor de geinteresseerde:

  • Jeroen heeft gelijk: je moet GetLayoutObjectAttribute ( "webviewer" ; "content" ) gebruiken, een misvatting van mijnen twege.
  • Wat je met deze functie echter terugkrijgt is afhankelijk van de browser die je gebruikt:
    • In Safari: mooie xml
    • In IE en FireFox: html...

Link to comment
  • 0

even een samenvatting van enkele pm berichten voor de geinteresseerde:

 

  • Jeroen heeft gelijk: je moet GetLayoutObjectAttribute ( "webviewer" ; "content" ) gebruiken, een misvatting van mijnen twege.
  • Wat je met deze functie echter terugkrijgt van je webviewer is afhankelijk van de standaardbrowser die je gebruikt (kan je direct zien aan de manier waarop de webbrowser xml laat zien):
    • In Safari: mooie xml
    • In IE en FireFox: niet echt bruikbare html

 

Jeroen, verbeter mij als ik ergens mis ben.

 

Groetjes

 

Andries

Link to comment
  • 0

Allereerst de beste wensen voor 2009! De champagne is inmiddels weer uit mijn lijf en ga weer verder met naar wat ik dacht iets simpels was.

 

Ik heb inmiddels de diverse voorstellen geprobeert wat nog niet heeft geleid tot een goede werkbare oplossing. Ik gebruik Windows XP en de standaard Explorer. Zoals eerder gemeld in de discusie geeft de viewer bij Explorer HTML terug en geen XML, het is dus lastig om met de getxml functie te werken. Zelf hou ik graag alles standaard op mijn PC en wil het liest (misschien tegen beter weten in) niet Safirie o.i.d. installeren. Ik ben dus even gestopt om die richting op te gaan.

 

Ik heb zoals voorgesteld de FMNexus plugin geinstalleerd. De url "http://6pp.kvdb.net/soap/api.wsdl" in mijn explorer geladen en deze pagina als wdsl opgeslagen en dit document in de WDSL map gezet. Ik krijg nu heel mooi in Filemaker de functies van dit WSDL document erbij. Vervolgens een berekenings veld gemaakt "postcode_lookup( Relaties_Postcode; Relaties_Huisnummer )" die onderstaand resultaat geeft:

 

Amsterdam52.3790354.928865street1019RMSumatrakadeAmsterdam52.3790354.928865street1019RMTosarituinAmsterdam52.3790354.928865street1019RMVeemkade

ç

 

Ik met de functie xmlget "xmlGet ( WSDL_postcode lookup ; "" )" geprobeerd alleen het adres en de stad eruit te halen echter zonder resultaat. Wat mij trouwens opvalt is dat het resultaat niks heeft gedaan met het door mij opgegeven huisnummer. Ik krijg zodoende dus ook nog eens 3 adressen terug.

 

Aan jullie nu de volgende vragen:

Hoe kan ik uit deze data nu alleen de benodigde data halen

Hoe kan ik als ik bijvoorbeeld 3 adressen terug krijg deze splitsen

 

Ik hoop dat jullie tijd en zin hebben om hier nog eens naar te kijken.

 

 

Groeten,

 

Barend

Link to comment
  • 0

Beste Barend,

 

Je bent een heel eind gevorderd, en je krijgt resultaat terug! Nog volgende opmerkingen:

 

  • - Mogelijk is er bij het kopiëren en plakken van de XML response een foutje gebeurd, want de laatste 3 karakters maken de XML niet valide

  • - Volgens de documentatie van de xmlGet functie, is de 2de parameter gewoon de naam van het XML element zonder scherpe haakjes, in casu: "street" ipv ""

  • - Ben je zeker dat he het huisnummer doorgeeft op de manier waarop de webservice het verwacht? Zie evt. in de documentatie, of contacteer de ontwikkelaars

  • - Hou er rekening mee dat geoservices typisch meerdere resultaten teruggeven met een verschillende precisie en een verschillende match rating. Het lokaliseren van een adres is namelijk niet altijd ondubbelzinnig. Zie het geo_precision element in de XML response (bv. waarde 'street', zou bv. ook waarde 'city' kunnen zijn, zie de documentatie van de webservice

  • - Het is aan je fantasie als ontwikkelaar om iets te doen met deze verschillende resultaten iets te doen

  • - Alleszins is het nodig dat je er rekening mee houdt dat een element (street) meerdere keren kan voorkomen. Eventueel zoeken op
http://www.briandunning.com of http://www.customfunctions.com, of je eigen custom function schrijven, zo moeilijk is dat niet hoor!

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...