Ga naar inhoud
  • 0

Adres opzoeken nav postcode en huis nr. via XML


Barend Warnaars

Vraag

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 naar reactie

11 antwoorden op deze vraag

Aanbevolen berichten

  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...