vous me conseillez quoi comme librairies pour generer de l'xml ?
Ça dépend à partir de quoi. XML::Simple est bien mais on ne contrôle pas trop la sortie. Le mieux reste XML::LibXML, qui permet de tout faire.
-- The fact that a believer is happier than a sceptic is no more to the point than the fact that a drunken man is happier than a sober one. The happiness of credulity is a cheap and dangerous quality. George Bernard Shaw
Le Tue, 25 Oct 2011 12:37:58 +0000, luc2 a écrit:
salut,
vous me conseillez quoi comme librairies pour generer de l'xml ?
Ça dépend à partir de quoi. XML::Simple est bien mais on ne contrôle pas
trop la sortie. Le mieux reste XML::LibXML, qui permet de tout faire.
--
The fact that a believer is happier than a sceptic is no more to the
point than the fact that a drunken man is happier than a sober one.
The happiness of credulity is a cheap and dangerous quality.
George Bernard Shaw
vous me conseillez quoi comme librairies pour generer de l'xml ?
Ça dépend à partir de quoi. XML::Simple est bien mais on ne contrôle pas trop la sortie. Le mieux reste XML::LibXML, qui permet de tout faire.
-- The fact that a believer is happier than a sceptic is no more to the point than the fact that a drunken man is happier than a sober one. The happiness of credulity is a cheap and dangerous quality. George Bernard Shaw
luc2
si je comprends bien, avec XML::LibXML, il faut creer des noeuds, ajouter des enfants, definir les attributs... c'est pas tres visuel comme methode...
Voici une base de travail : une fonction qui prend un hash en paramètre, et renvoie le XML qui représente la strructure du hash, y a pas plus simple :)
# pour faire du XML use XML::LibXML; # pour garantir l'ordre des clefs de hash use Tie::IxHash; # conversion en UTF-8 nécessaire pour LibXML use Unicode::String;
sub build_document { #****f* build_document # USAGE # build_document(docroot=>{}.,..) # EXAMPLE # build_document( # truc => { # oper => "titi", # status => "OK", # }, # param => { # role => "user", # text => "toto", # }, # target => { # name => "target", # sender => "envoyeur", # }, # uri => { # text => "URI", # }, # comment => { # text => "comment?" # } # ); #*** my %param; tie %param, "Tie::IxHash"; %param = @_;
# ATTENTION $doc ne doit contenir que de l'UTF-8 my $doc = XML::LibXML->createDocument( "1.0", "ISO-8859-1" );
# root my $root = $doc->createElement($rootelem); $doc->setDocumentElement($root);
# attributs du root while ( my ( $k, $v ) = each %$rootval ) { $root->setAttribute( $k, $v ); }
# élements fils while ( my ( $k, $v ) = each %param ) { my $elem = $doc->createElement($k);
while ( my ( $subk, $subv ) = each %{$v} ) { if ( $subk eq 'text' ) {
# conversion du contenu en UTF-8 Unicode::String->stringify_as('utf8'); $subv = Unicode::String::latin1($subv);
-- Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. Rich Cook
Le Thu, 27 Oct 2011 10:09:26 +0000, luc2 a écrit:
y'a pas une doc plus claire que
http://search.cpan.org/~shlomif/XML-LibXML-1.88/ ? j'comprends jamais
par ou commencer dans ce genre de docs...
Voici une base de travail : une fonction qui prend un hash en paramètre,
et renvoie le XML qui représente la strructure du hash, y a pas plus
simple :)
# pour faire du XML
use XML::LibXML;
# pour garantir l'ordre des clefs de hash
use Tie::IxHash;
# conversion en UTF-8 nécessaire pour LibXML
use Unicode::String;
sub build_document {
#****f* build_document
# USAGE
# build_document(docroot=>{}.,..)
# EXAMPLE
# build_document(
# truc => {
# oper => "titi",
# status => "OK",
# },
# param => {
# role => "user",
# text => "toto",
# },
# target => {
# name => "target",
# sender => "envoyeur",
# },
# uri => {
# text => "URI",
# },
# comment => {
# text => "comment?"
# }
# );
#***
my %param;
tie %param, "Tie::IxHash";
%param = @_;
# ATTENTION $doc ne doit contenir que de l'UTF-8
my $doc = XML::LibXML->createDocument( "1.0", "ISO-8859-1" );
# root
my $root = $doc->createElement($rootelem);
$doc->setDocumentElement($root);
# attributs du root
while ( my ( $k, $v ) = each %$rootval ) {
$root->setAttribute( $k, $v );
}
# élements fils
while ( my ( $k, $v ) = each %param ) {
my $elem = $doc->createElement($k);
while ( my ( $subk, $subv ) = each %{$v} ) {
if ( $subk eq 'text' ) {
# conversion du contenu en UTF-8
Unicode::String->stringify_as('utf8');
$subv = Unicode::String::latin1($subv);
--
Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe trying
to produce bigger and better idiots. So far, the Universe is winning.
Rich Cook
Voici une base de travail : une fonction qui prend un hash en paramètre, et renvoie le XML qui représente la strructure du hash, y a pas plus simple :)
# pour faire du XML use XML::LibXML; # pour garantir l'ordre des clefs de hash use Tie::IxHash; # conversion en UTF-8 nécessaire pour LibXML use Unicode::String;
sub build_document { #****f* build_document # USAGE # build_document(docroot=>{}.,..) # EXAMPLE # build_document( # truc => { # oper => "titi", # status => "OK", # }, # param => { # role => "user", # text => "toto", # }, # target => { # name => "target", # sender => "envoyeur", # }, # uri => { # text => "URI", # }, # comment => { # text => "comment?" # } # ); #*** my %param; tie %param, "Tie::IxHash"; %param = @_;
# ATTENTION $doc ne doit contenir que de l'UTF-8 my $doc = XML::LibXML->createDocument( "1.0", "ISO-8859-1" );
# root my $root = $doc->createElement($rootelem); $doc->setDocumentElement($root);
# attributs du root while ( my ( $k, $v ) = each %$rootval ) { $root->setAttribute( $k, $v ); }
# élements fils while ( my ( $k, $v ) = each %param ) { my $elem = $doc->createElement($k);
while ( my ( $subk, $subv ) = each %{$v} ) { if ( $subk eq 'text' ) {
# conversion du contenu en UTF-8 Unicode::String->stringify_as('utf8'); $subv = Unicode::String::latin1($subv);
-- Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. Rich Cook
Paul Gaborit
À (at) 27 Oct 2011 10:15:11 GMT, luc2 écrivait (wrote):
les templates, ca a l'air deja plus visuel comme methode... je vais essayer...
C'est très puissant pour générer tout type de documents textes (HTML, CSS, LaTeX, XML, etc.) à partir de données diverses (issues par exemple d'un SGBD). Par contre, ça ne garantit absolument pas la qualité du résultat alors qu'avec les modules plus spécialisés (XML::LibXML par exemple), vous êtes sûr de produire du XML bien formé.
À (at) 27 Oct 2011 10:15:11 GMT,
luc2 <luc2@nospam.invalid> écrivait (wrote):
les templates, ca a l'air deja plus visuel comme methode... je vais essayer...
C'est très puissant pour générer tout type de documents textes (HTML,
CSS, LaTeX, XML, etc.) à partir de données diverses (issues par exemple
d'un SGBD). Par contre, ça ne garantit absolument pas la qualité du
résultat alors qu'avec les modules plus spécialisés (XML::LibXML par
exemple), vous êtes sûr de produire du XML bien formé.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) 27 Oct 2011 10:15:11 GMT, luc2 écrivait (wrote):
les templates, ca a l'air deja plus visuel comme methode... je vais essayer...
C'est très puissant pour générer tout type de documents textes (HTML, CSS, LaTeX, XML, etc.) à partir de données diverses (issues par exemple d'un SGBD). Par contre, ça ne garantit absolument pas la qualité du résultat alors qu'avec les modules plus spécialisés (XML::LibXML par exemple), vous êtes sûr de produire du XML bien formé.