Bonjour,
Afin de créer une base de données de méta-données pour des images, je dois parser un fichier rdf (généré par ExifTool) en Perl.
La documentation sur le sujet est assez pauvre sur le net, j'ai fini par trouver le module RDF::Redland grâce à cette page mais j'ai un peu de mal à arriver à mes fins.
J'ai réussi à récupérer le contenu mais dans le désordre et de manière non hiérarchique (ma base à une notion de tag parent->enfant) ce qui est assez gênant..
Voici un bout de code :
Et un bout de mon fichier rdf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 use RDF::Redland; my $oStorage = new RDF::Redland::Storage('hashes', 'test', "hash-type='memory'"); my $oModel = new RDF::Redland::Model($oStorage, ""); my $oParser = new RDF::Redland::Parser(); my $oUri = new RDF::Redland::URI("file:$sXmlFile"); my $oStream = $oParser->parse_as_stream($oUri); while (!$oStream->end) { my $oStatement = $oStream->current; my $oSubject = $oStatement->subject; my $oPredicate = $oStatement->predicate; my $oObject = $oStatement->object; print $oSubject->as_string . ","; print $oPredicate->as_string . ","; print $oObject->as_string . "\n"; $oStream->next; }
Y'a t-il moyen de parser de meilleure façon le fichier ? Je trouve rien sur le net..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?xml version='1.0' encoding='UTF-8'?> <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <rdf:Description> <ExifTool:ExifToolVersion>8.80</ExifTool:ExifToolVersion> <System:FileSize>374 kB</System:FileSize> <File:FileType>SWF</File:FileType> <File:MIMEType>application/x-shockwave-flash</File:MIMEType> <Flash:FlashVersion>9</Flash:FlashVersion> <XMP-xmp:MetadataDate>2012:03:05 12:08:26+01:00</XMP-xmp:MetadataDate> <XMP-dc:Subject> <rdf:Bag> <rdf:li>Bla</rdf:li> <rdf:li>TEST</rdf:li> </rdf:Bag> </XMP-dc:Subject> </rdf:Description> </rdf:RDF>
Je me demande si je ne devrais pas simplement utiliser un parser xml comme XML::LibXML, lequel serait le plus adapté pour ce genre de fichiers ?
Merci
Partager