Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

generer de l'xml

21 réponses
Avatar
luc2
salut,

vous me conseillez quoi comme librairies pour generer de l'xml ?

10 réponses

1 2 3
Avatar
Paul Gaborit
À (at) 25 Oct 2011 12:37:58 GMT,
luc2 écrivait (wrote):

vous me conseillez quoi comme librairies pour generer de l'xml ?



Sans plus de précisions sur le besoin : Template Toolkit.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Vincent Lefevre
In article <4ea6ada6$0$3683$,
luc2 wrote:

vous me conseillez quoi comme librairies pour generer de l'xml ?



XML::LibXML

--
Vincent Lefèvre - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)
Avatar
Emmanuel Florac
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
Avatar
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...

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...

Le 26-10-2011, Emmanuel Florac a écrit :

Ç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.
Avatar
luc2
les templates, ca a l'air deja plus visuel comme methode... je vais essayer...

Le 25-10-2011, Paul Gaborit a écrit :

Sans plus de précisions sur le besoin : Template Toolkit.
Avatar
Emmanuel Florac
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);

my $text = XML::LibXML::Text->new($subv);
$elem->addChild($text);
} else {
$elem->setAttribute( $subk, $subv );
}
}
$root->addChild($elem);
}
return $doc->toString(1);
}

1;
########
# fini.

--
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
Avatar
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é.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
Klaus
On 25 oct, 13:37, luc2 wrote:
salut,

vous me conseillez quoi comme librairies pour generer de l'xml ?



XML::Writer https://metacpan.org/module/XML::Writer

ou

XML::MinWriter https://metacpan.org/module/XML::MinWriter
Avatar
genomart
Je te recommande XML::Writer.
Avatar
luc2
un truc que j'aime pas avec les templates, c'est que ca fait des lignes vides
de partout dans le resultat. exemple :

<trucmachin>
[% IF name %]
<name>[% name %]</name>
[% END]
</trucmachin>

resultat :

<trucmachin>

<name> y'a des lignes vides... ca m'enerve... </name>

</trucmachin>

y'a moyen d'eviter ca ?
1 2 3