Newsgroup: it.comp.lang.perl
Titolo: XML::Parser

Sto cercando un libreria per perl che faccia il parsing DOM di un documento
XML e quindi fornisca della funzioni che permettano di navigare il tree
creato.
Ad esempio sarebbe comodo avere una funzione firstChild, lastChild.
Oppure una getElementById .
Insomma un po quello che in javascript è "di serie".
Esiste qualcosa del genere per PERL?
Ho provato con
  use XML::Parser;
Il parsing lo fa ma poi non riesco a navigare il documento DOM. Con funzioni
del tipo sopraddetto.
Ciao,
--Gabriele

 Esiste qualcosa del genere per PERL?
XML::DOM [1]
Non mi intendo tanto di XML, ma ti consiglio di guardare anche
XML::Twig [2]. Per le piccole cose che dovevo fare si e` sempre
rilevato molto flessibile. Il che non vuol dire anche per le
cose grandi: anzi, da quel che ho letto uno dei suoi punti di
forza e` la possibilita` di gestire automaticamente il caricamento
e il flush-ing di sottoalberi del documento, permettendo cosi`
di risparmiare memoria. Un ibrido tra DOM e SAX (vi prego di
avvisarmi se ho detto castronerie).
ciao
Stefano
[1] 
http://search.cpan.org/author/ENNO/libxml-enno-1.02/lib/XML/DOM.pm
[2] 
http://search.cpan.org/author/MIROD/XML-Twig-3.09/Twig.pm
 
http://www.xmltwig.com/xmltwig/

 [...] Il che non vuol dire anche per le
                             ^
Doveva essere: "il che non vuol dire che non vada bene anche per le..."
           « Prima rileggi il messaggio, *poi* premi Send »
ciao :)
Stefano

 [1] 
http://search.cpan.org/author/ENNO/libxml-enno-1.02/lib/XML/DOM.pm
Qui subentra il problema da principiante.
Ho scaricato il file DOM.pm .
Come faccio ad installare il modulo? E' sufficiente che lo copio nella
directory lib del perl?
Ho trovato documentazione su google per l'installazione su linux, ma per
windows non ho trovato nulla.
E se invece volessi installare tutta libxml-enno-1.02.???
Trovo un 
makefile.pl
. Lo lancio e mi crea un file makefile senza estensione
che ci devo fare?
Ciao,
--Gabriele

che ci devo fare?
Se neanche cpan funziona, anche questa è una procedura che funziona (sempre
che non ci sia della roba in C da compilare, che complicherebbe parecchio le
cose). Il makefile ottenuto lo devi sottoporre make o, sotto Windows, nmake.
Se ti va fatta bene, nmake lanciato nella directory del modulo ti fa tutto.
Se ti va fatta male... parliamone.
Ciao.

 Se ti va fatta bene, nmake lanciato nella directory del modulo ti fa
tutto.
Funziona. Ho usato nmake. Non ho trovato il modulo su ppm ma solo su CPAN.
L'unica cosa che ho dovuto installare il modulo PerlSAX che era richiesto
come dipendenza e mi ha dato un errore sul "make test" indicando sul file
stream.t Failed.
Che cosa è questo file? In generale che cosa sono i file .t ?
Questo fatto non sembra aver pregiudicato il fuzionamento di XML::DOM.
Ciao,
--Gabriele

Questo fatto non sembra aver pregiudicato il fuzionamento di XML::DOM.
Tutto dipende se è andata male il make dei file di test, o se il file di
test è stato correttamente creato, e il test è fallito. Se il test è fallito
dovrebbe voler dire che quella funzionalità (che non so quale sia) non è
disponibile, il che potrebbe essere più o meno importante per te, secondo
quello che devi fare. Se è andato male il make del file, bisognerebbe capire
il motivo, potrebbe anche essere una cosa banale. Da quello che scrivi non
sono del tutto sicuro di capire quale delle due ipotesi si sia verificata.
Ciao.

non sono del tutto sicuro di capire quale delle due ipotesi si sia
verificata.
Di seguito ho riportato passo passo quello che ho fatto. Cosě magari mi
spiego meglio.
Scusate la lunghezza del mio messaggio.
C:\libxml>perl Makefile.pl
Checking if your kit is complete...
Looks good
Writing Makefile for libxml-perl
C:\libxml>c:\nmake\nmake
Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
cp lib/XML/Perl2SAX.pm blib\lib\XML/Perl2SAX.pm
cp lib/XML/Handler/Subs.pm blib\lib\XML/Handler/Subs.pm
cp lib/XML/PatAct/MatchName.pm blib\lib\XML/PatAct/MatchName.pm
cp lib/XML/SAX2Perl.pm blib\lib\XML/SAX2Perl.pm
cp lib/XML/PatAct/ActionTempl.pm blib\lib\XML/PatAct/ActionTempl.pm
cp lib/XML/Handler/Sample.pm blib\lib\XML/Handler/Sample.pm
cp lib/XML/PatAct/ToObjects.pm blib\lib\XML/PatAct/ToObjects.pm
cp lib/XML/Handler/CanonXMLWriter.pm blib\lib\XML/Handler/CanonXMLWriter.pm
cp lib/Data/Grove/Parent.pm blib\lib\Data/Grove/Parent.pm
cp lib/Data/Grove/Visitor.pm blib\lib\Data/Grove/Visitor.pm
cp lib/XML/ESISParser.pm blib\lib\XML/ESISParser.pm
cp lib/XML/Parser/PerlSAX.pm blib\lib\XML/Parser/PerlSAX.pm
cp lib/Data/Grove.pm blib\lib\Data/Grove.pm
cp lib/XML/PatAct/PatternTempl.pm blib\lib\XML/PatAct/PatternTempl.pm
cp lib/XML/PatAct/Amsterdam.pm blib\lib\XML/PatAct/Amsterdam.pm
cp lib/XML/Handler/XMLWriter.pm blib\lib\XML/Handler/XMLWriter.pm
C:\libxml>c:\nmake\nmake test
Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
        C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0,
'bl
ib\lib', 'blib\arch')" t\amsterdam.t t\canon_xml_writer.t t\schema.t
t\stream.t
t\subs.t t\xp_sax.t
t\amsterdam...........ok
t\canon_xml_writer....ok
t\schema..............ok
t\stream..............FAILED test 11
        Failed 1/11 tests, 90.91% okay
t\subs................ok
t\xp_sax..............ok
Failed Test Stat Wstat Total Fail  Failed  List of Failed
----------------------------------------------------------------------------
---
t\stream.t                11    1   9.09%  11
Failed 1/6 test scripts, 83.33% okay. 1/45 subtests failed, 97.78% okay.
NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code
'0xff'
Stop.
C:\libxml>c:\nmake\nmake install
Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.
Skipping C:\Perl\site\lib\XML\ESISParser.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Perl2SAX.pm (unchanged)
Skipping C:\Perl\site\lib\XML\SAX2Perl.pm (unchanged)
Skipping C:\Perl\site\lib\XML\PatAct\ActionTempl.pm (unchanged)
Skipping C:\Perl\site\lib\XML\PatAct\Amsterdam.pm (unchanged)
Skipping C:\Perl\site\lib\XML\PatAct\MatchName.pm (unchanged)
Skipping C:\Perl\site\lib\XML\PatAct\PatternTempl.pm (unchanged)
Skipping C:\Perl\site\lib\XML\PatAct\ToObjects.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Parser\PerlSAX.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Handler\CanonXMLWriter.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Handler\Sample.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Handler\Subs.pm (unchanged)
Skipping C:\Perl\site\lib\XML\Handler\XMLWriter.pm (unchanged)
Skipping C:\Perl\site\lib\Data\Grove.pm (unchanged)
Skipping C:\Perl\site\lib\Data\Grove\Parent.pm (unchanged)
Skipping C:\Perl\site\lib\Data\Grove\Visitor.pm (unchanged)
Writing C:\Perl\site\lib\auto\libxml-perl\.packlist
Appending installation info to C:\Perl\lib/perllocal.pod
C:\libxml>

'0xff'
Sembra che sia fallito 1 degli 11 test contenuti nel file stream.t. Di più
non è proprio possibile dire. Bisognerebbe leggere la documentazione,
leggere stream.t e capire in dettaglio che cosa fa quel test, perché è
fallito, ecc.
Se la cosa è per un tuo uso personale, fintanto che non riscontri qualche
errore o malfunzionamento, io continuerei ad usare il modulo senza
preoccuparmi troppo. Se invece devi fornire un servizio a terzi, conviene
forse indagare un po' meglio. Io però non sono in grado di aiutarti più che
tanto.
Ciao.

>Io perň non sono in grado di aiutarti piů che tanto.
Grazie comunque.
Ciao.
--Gabriele