webForumDet fria alternativet

hantera XML i Perl

Perl & Ruby

7 svar · 338 visningar · startad av Roing

Medlem sedan feb. 2003108 inlägg
Frågan#1

jag är nybörjare på Perl och försöker hantera lite XML data med detta...

jag kan plocka ut ett attribut med följande rad:
($data) = $buf =~ /data="(.*?)"/;

men jag vill nu göra en if sats som säger att jag bara skall göra detta om namnet på noden är t.ex. "klm"
<klm data="3" /> kan t.ex. va min xml nod.

mvh/
Martin

Medlem sedan dec. 19992 555 inlägg
#2

Det första man bör vänja sig av med som nybörjare, är att försöka uppfinna hjulet på nytt. En av Perls styrkor är den mängd färdig kod som finns i form av moduler. Använd den om möjligt. :)

I ditt fall skulle jag rekommendera någon av modulerna i http://www.cpan.org/modules/by-module/XML/ (du kan t.ex. titta på modulen XML::Sax och se om den täcker dina behov).

Medlem sedan feb. 2003108 inlägg
#3

Tack men dedär va nog lite väl tungt för mig...
Jag tror/hoppas jag kan klara mig med enklare kod.

som jag tänkt så borde jag kunna plocka ut nod namnet på liknade vis som jag får infon i variablen data
($data) = $buf =~ /data="(.*?)"/;

xml koden som jag hanterar är ju bara en nod åt gången så egntlgen så har ju inte detta så mycket med xml att göra...
Mer vanlig string hantering... Så om jag omformulerar frågan och vill ha fram första ordet efter < i $buf. hur gör jag då?

Medlem sedan feb. 2003108 inlägg
#4

jag va inne och kollade den där SAX också men jag hade problem att hitta någon rejäl beskrivning om vilka mettoder den innehåler... läste massa readme filer men inte mycket info i dem.
Var ska jag kolla?
/Martin

Medlem sedan aug. 2000374 inlägg
#5

XML::Sax

Medlem sedan dec. 19992 555 inlägg
#6

Så om jag omformulerar frågan och vill ha fram första ordet efter < i $buf. hur gör jag då?

Om man fortsätter på din befintliga kod ...

($name,$data) = $buf =~ /<([^ ]*) data="(.*?)"/;
Medlem sedan feb. 2003108 inlägg
#7

aha. det är nog på den nivån jag vill hantera det hela. tack. var kan man lära sig den syntax hanteringen?

/Martin

Medlem sedan dec. 19992 555 inlägg
#8

Ett par exempel (du hittar många fler om du söker på "regular expressions" i en sökmaskin).

http://www.effectiveperl.com/EP.04.pdf

http://www.perldoc.com/perl5.6.1/pod/perlretut.html

http://www.perldoc.com/perl5.6/pod/perlre.html

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)