Toon posts:

[perl & xml] hoe kan ik dit het handigste parsen??

Pagina: 1
Acties:

Verwijderd

Topicstarter
hay,

ik zit met het volgende vraagje:

Ik ben bezig met een script dat een request doet aan een externe server, en deze returned dan een xml-scriptje(berichtje, pagina :? )

de xml-code ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="ISO-8859-1"?>
<omnimessage>
   <version>v101</version>
   <type>ack</type>
   <messageid>102291</message>
   <status>0</status>
   <statusmessage>het is gelukt!</statusmessage>
   <errorcode>0</errorcode>
   <errormessage>geen fouten</errormessage>
</omnimessage>

Hoe kan ik deze code nou het beste parsen??? ik ben een onwijze XML N00B. is er misschien een module ofzow om de code te parsen of moet dit allemaal met regexps gebeuren???

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Met Regexp's zou ik het niet doen ;) Om XML te parseren bestaan verschillende API's, afhankelijk van welke programmeertaal je gebruikt. Er zijn grofweg twee mogelijkheden om een XML bestand te parsen :

-DOM, hierbij gebruik je een API om een soort tree van de XML te maken die je met je code kan lezen

-SAX, hierbij krijg je van de API een stroom van achtereenvolgende events zoals startElement enz.

Voor jou is misschien een DOM het handigst, maar je moet er natuurlijk eerst eentje vinden. Zoek es op internet naar API's voor jouw programmeertaal, en bekijk voorbeelden ervan :)

Verwijderd

Topicstarter
THx voor de snelle reply,
ik gebruik perl (zie titel)

had wel gezocht op cpan maar kon niet echt veel vinden maar ik zoek nog maar een keertje.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Ik ben niet echt bekend met Perl, maar het kan haast niet anders of er is een XML-parser voor :) Ik zie aan je ondertitel dat "PHP ook OK" is. Waarom gbruik je dat dan niet ? Daar zit de DOM functionaliteit al ingebouwd :)

Verwijderd

Topicstarter
gevonde (DIT IS ME 175e post onder deze nick! Feestje!!!)

XML::Simple Should do the trick.

je xml word gewoon berijkbaar onder een var, dus:
code:
1
2
use XML::Simple;
my $config = XMLin("<? xml ?><omnimessage><status>150</status></omnimessage></xml>");

$config->{omnimessage}->{status} returned dan 150

kan eigenlijk niet makkelijker.
enne, php gebruik ik niet omdat ik nou al 3 jaar zit te perlen, en ik vind perl iets duidelijker in vars, en arrays enzow, en perl heeft ook zo'n beetje alles ingebouwd, alleen moet je het eerst even aanroepen.

  • Juup
  • Registratie: Februari 2000
  • Niet online
Op dinsdag 19 februari 2002 21:10 schreef MisterData het volgende:
Met Regexp's zou ik het niet doen ;) ...
Als je er alleen iets simpels mee wil doen / uit wil halen dan kan een regexp (of meerdere) prima voldoen. Is i.i.g. veel lichter dan DOM/SAX stuff. Je kunt die regexp ook zo streng of licht maken als je zelf wilt, in geval van afwijkingen in de xml message. Heb je er een dtd bij?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Verwijderd

Topicstarter
i'm a xml n00b,
WTF is een DTD???
ik heb er in iedergeval volgens mij geneen,
maar die xml is wel zo goed als altijd hetzelfde (de waarden natuurlijk niet hé)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Foxboy: WTF is een DTD???
Document Type Definition: een specificatie van een structuur voor XML documenten. Vrijwel alle standaarden (XHTML etc) hebben een DTD...

Op het web kan je hier meeeer dan genoeg over vinden :P .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1