Article View: fr.comp.text.xml
Article #9806Re: shallow parsing : REX
From: Cyrille Giquello
Date: Mon, 05 Feb 2001 21:37
Date: Mon, 05 Feb 2001 21:37
124 lines
4823 bytes
4823 bytes
rappel du Sujet : un parser XML light, c'est a dire sans installer de lib a compiler.
Doit construire et permettre l'acces au DOM d'un document XML.
Encore un avantage pour l'existance d'un tel module :
il est facile de gérer un cache de la représentation mémoire du DOM.
Et avec des z'outils tel IPC ou modPerl ou ... on peut partager les données entre
plusieurs threads (je pense a un serveur web).
Mais je pense en Perl, qui permet facilement de save/load une representation memoire d'une
structure de donnees.
Je continue le dev :
- deja un DOM sous forme de reference a des hashtables (Perl ;o) L'acces au element du DOM
s'effectue selon les clefs de ces hash.
- todo : Ajout de qlqs accesseurs pour compléter la boite a outils.
- todo : Ensuite un p'tit stat() sur le fichier pour choisir de charger le cache ou bien
de reparser le doc.
PS : j'ais un p'tit soucis avec REX pour lire les attributs numerique d'un tag ,
exemple qui ne marche pas :
<site id="toto" debug="123" couleur="bleu"> ...
exemple qui marche :
<site id="toto" debug="oui" couleur="bleu"> ...
c'est PASs Bien, mais pour avancer j'ais modifie la RegEx $NameStrt.
en faite je n'arrive pas a manipuler les autres RegEx ;o{
# perl code :
# originale :
$NameStrt = "[A-Za-z_:]|[^\\x00-\\x7F]";
# modifiee
$NameStrt = "[A-Za-z_:0-9]|[^\\x00-\\x7F]";
#
$NameChar = "[A-Za-z0-9_:.-]|[^\\x00-\\x7F]";
$Name = "(?:$NameStrt)(?:$NameChar)*";
#
my $tag = '<site id="toto" debug="oui" couleur="bleu">' ;
( $element, @attribs) = $tag =~ /$Name/go ;
print "$element : " , join( ',', @attribs) , "\n";
my $tag = '<site id="toto" debug="123" couleur="bleu">' ;
( $element, @attribs) = $tag =~ /$Name/go ;
print "$element : " , join( ',', @attribs) , "\n";
Cyrille
about: REX: XML Shallow Parsing with Regular Expressions
http://www.cs.sfu.ca/~cameron/REX.html
Gilles Lenfant wrote:
> Ne cherche pas à faire un parser perso avec un processeur de Regular
> Expression...
>
> 1/ Tu aboutiras à faire quasiment un parser SAX ou DOM (un parser SAX est
> souvent programmé à l'aide d'un processeur de Regular Expression et un
> parser DOM à l'aide d'un parser SAX).
> Un parser SAX suffit pour lire des XML simples comme un .ini.
>
> 2/ Le code sera plus difficilement maintenable.
>
> "Cyrille Giquello" <cyrille@ktaland.com> a écrit dans le message news:
> 3A7EAD2F.90237E86@ktaland.com...
> Hello la communauté,
>
> bon, je cherche à lire du XML sans installer un gros parser comme il est
> indiqué partout.
> Car l'utilisation devra être légère puisque l'objectif est de ne plus
> utiliser des
> fichiers du genre .INI à la windows.
>
> J'ais trouvé un article qui parle de Regular Expression pour lire du XML en
> Perl /
> Javascript / Flex ... :
>
> REX: XML Shallow Parsing with Regular Expressions
> http://www.cs.sfu.ca/~cameron/REX.html
>
> Et bien je n'arrive pas à faire fonctionner ce bazard.
>
> Est-ce que quelqu'un a une piste ?
> Pour parser du XML sans compiler un parser (xeres, expat ...).
> Afin de manipuler des p'tits fichier de config !!
>
> Help !
> Je commence à attraper mal à la tete ;o)
>
> Cyrille.
>
> ------------------
>
> Encryption | Duncan Campbell | DST | Blacklisted 411 | ECHELON | 2600 | PGP
> | Corsica |
> NSA
--
Cyrille / Ktaland
-----------------------------------------
- http://www.ktaland.com/
- Pour votre MAC: http://TOUSOFT.COM/
-----------------------------------------
Encryption | Duncan Campbell | DST | Blacklisted 411 | ECHELON | 2600 | PGP | Corsica |
NSA
Technical Details
Message-ID:
<3A7F1D28.A100A9D2@ktaland.com>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!213.56.195.71!fr.usenet-edu.net!usenet-edu.net!oleane.net!oleane!nnrp.oleane.net!not-for-mailReferences:
<3A7EAD2F.90237E86@ktaland.com> <95mfmm$imf$1@reader1.imaginet.fr>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,2a2c137789640073 X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2001-02-05 13:40:03 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!213.56.195.71!fr.usenet-edu.net!usenet-edu.net!oleane.net!oleane!nnrp.oleane.net!not-for-mail From: Cyrille Giquello <cyrille@ktaland.com> Newsgroups: fr.comp.text.xml Subject: Re: shallow parsing : REX Date: Mon, 05 Feb 2001 22:37:44 +0100 Organization: Ktaland Lines: 126 Message-ID: <3A7F1D28.A100A9D2@ktaland.com> References: <3A7EAD2F.90237E86@ktaland.com> <95mfmm$imf$1@reader1.imaginet.fr> NNTP-Posting-Host: c2fa9658.adsl.oleane.fr Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: s1.read.news.oleane.net 981409015 8492 194.250.150.88 (5 Feb 2001 21:36:55 GMT) X-Complaints-To: abuse@oleane.net NNTP-Posting-Date: Mon, 5 Feb 2001 21:36:55 +0000 (UTC) X-Mailer: Mozilla 4.04 [en] (WinNT; I)