Modification XML en Perl
Fermé
ldld
Messages postés
11
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2008
-
28 août 2008 à 17:54
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 sept. 2008 à 09:11
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 sept. 2008 à 09:11
A voir également:
- Modification XML en Perl
- Xml viewer - Télécharger - Édition & Programmation
- Logiciel modification pdf - Guide
- Suivi de modification word - Guide
- Office xml handler - Télécharger - Traitement de texte
- Oxygen xml - Télécharger - Divers Web & Internet
6 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
28 août 2008 à 19:53
28 août 2008 à 19:53
Salut,
On pourra avoir peut être des idées, mais il faut que tu nous aides ;-)
Voici en quoi tu peux nous aider.
1. tu nous affiche ton fichier xml (tu peux le mettre sur cjoint.com)
2. tu nous dit ce que tu veux traduire
mettre le doc cible dans une liste et remplacer les lignes du doc source.
Il y plusieurs moyens pour traiter un fichier en Perl.
Par exemple
1. tu peux utiliser un fichier temporaire
2. tu peux créer carrément un nouveau fichier suite au traitement de(s) fichier(s)
3. tu peux faire des modifications directement tout en sauvegardant l'original
Je pense que l'utilisation d'une liste n'est pas vraiment nécessaire, mais bon, je ne peux rien dire tant que je ne sais pas exactement ce que tu veux obtenir ;-)
Le mode slurp n'est pas vraiment nécessaire.
De toute façon si le mode slurp est activé tu peux mettre dans une variable scalaire le contenu de fichier
Quand tu écris
$/= undef;
while ($linefr=<FR>)
c'est un peu inutile de faire une boucle sur le handle FR puisqu'il n'y a qu'une seule chaine qui contiens des caractères de saute de lignes à l'interieur
Voici un exemple
Donc le résultat te montre bien qu'il n'y a qu'une seule ligne
Ce qui veut dire qu'il suffit de s'occuper seulement de la variable scalaire
On pourra avoir peut être des idées, mais il faut que tu nous aides ;-)
Voici en quoi tu peux nous aider.
1. tu nous affiche ton fichier xml (tu peux le mettre sur cjoint.com)
2. tu nous dit ce que tu veux traduire
mettre le doc cible dans une liste et remplacer les lignes du doc source.
Il y plusieurs moyens pour traiter un fichier en Perl.
Par exemple
1. tu peux utiliser un fichier temporaire
2. tu peux créer carrément un nouveau fichier suite au traitement de(s) fichier(s)
3. tu peux faire des modifications directement tout en sauvegardant l'original
Je pense que l'utilisation d'une liste n'est pas vraiment nécessaire, mais bon, je ne peux rien dire tant que je ne sais pas exactement ce que tu veux obtenir ;-)
Le mode slurp n'est pas vraiment nécessaire.
De toute façon si le mode slurp est activé tu peux mettre dans une variable scalaire le contenu de fichier
Quand tu écris
$/= undef;
while ($linefr=<FR>)
c'est un peu inutile de faire une boucle sur le handle FR puisqu'il n'y a qu'une seule chaine qui contiens des caractères de saute de lignes à l'interieur
Voici un exemple
lami20j@debian:~/trash$ cat slurp.txt ligne1 ligne2 ligne3 lami20j@debian:~/trash$ cat slurp.pl #!/usr/bin/perl # open FR,"slurp.txt" or die "E/S : $!\n"; $/= undef; #mode slurp while ($linefr=<FR>){ # boucle inutile, il y a une seule ligne print "ligne numéro $. = > $linefr\n"; } __END__ lami20j@debian:~/trash$ perl slurp.pl ligne numéro 1 = > ligne1 ligne2 ligne3
Donc le résultat te montre bien qu'il n'y a qu'une seule ligne
Ce qui veut dire qu'il suffit de s'occuper seulement de la variable scalaire
lami20j@debian:~/trash$ cat slurp.pl #!/usr/bin/perl # open FR,"slurp.txt" or die "E/S : $!\n"; $/=undef; $linefr=<FR>; print "$linefr\n"; __END__ lami20j@debian:~/trash$ perl slurp.pl ligne1 ligne2 ligne3En revanche en désactivant le mode slurp on vois bien les 3 lignes
lami20j@debian:~/trash$ cat slurp.pl #!/usr/bin/perl # open FR,"slurp.txt" or die "E/S : $!\n"; while ($linefr=<FR>){ print "ligne numéro $. = > $linefr\n"; } __END__ lami20j@debian:~/trash$ perl slurp.pl ligne numéro 1 = > ligne1 ligne numéro 2 = > ligne2 ligne numéro 3 = > ligne3 lami20j@debian:~/trash$
ldld
Messages postés
11
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2008
28 août 2008 à 20:53
28 août 2008 à 20:53
Merci pour ces explication:
avant tt je débute en Perl.
j'ai un fichier xml voilà un extrait :
<text id="x.c.hr.un.1979.fr" lang="fr">
<front>
<div type="update">
<p id="un.1979.fr_U.P">blblblblbl</p>
</div>
</front>
<body>
<head id="un.1979.fr_H">blblblblblb</head>
<div type="preamble">
<list type="simple">
<item id="un.1979.fr_B.i-1">
<seg type="membrestates">titre</seg>
</item>
<item>
<seg type="context">
<list type="simple">
<item id="un.1979.fr_B.i-2.i-1">le n°1 de la liste</item>
et j'ai la traduction de ce fichier en anglais en txt.
le but est de générer la même structure xml en utilisant le fichier text (remplacer ce qui est en gras par la traduction. l'objectif est d'avoir deux fichiers xml de même structure dans les deux langues.
mon code Perl:
open (FR, "<convention27.fr.xml") or die "impossible d'ouvrir le fichier $ : $!\n";
while ($line2=<FR>)
{
$line2 =~ s/ +/ /g;
if($line2 =~ />([^<]+)([<\/]+)/mg) #cette regexp reconnait tout le texte entre les balise xml
{
$m = $1;
print "$m\n";
@fr = split (/\n/,$m);
}
}
open (AR,"<:utf8","conv_fem.txt");
while ($line =<AR>)
{
if (length $line<=15) # j'ai enlevé les ligne dont j'ai pas besoin
{
$res = $line;
}
$line =~s/$res//g;
@ar = $line;
for ($i=0;$i<@fr;$i++)
{
$fr[$i]=$ar[$i];
}
$m = join ("\n",@fr);
print $m;
}
avec ce programme je remplace les deux listes.
Je peux même changer le texte du fichier xml sans le mettre dans une liste @fr.
je veux récupérer mon fichier xml de départ avec les modifications que je viens de faire sur la $m.
Merci pour ton aide
avant tt je débute en Perl.
j'ai un fichier xml voilà un extrait :
<text id="x.c.hr.un.1979.fr" lang="fr">
<front>
<div type="update">
<p id="un.1979.fr_U.P">blblblblbl</p>
</div>
</front>
<body>
<head id="un.1979.fr_H">blblblblblb</head>
<div type="preamble">
<list type="simple">
<item id="un.1979.fr_B.i-1">
<seg type="membrestates">titre</seg>
</item>
<item>
<seg type="context">
<list type="simple">
<item id="un.1979.fr_B.i-2.i-1">le n°1 de la liste</item>
et j'ai la traduction de ce fichier en anglais en txt.
le but est de générer la même structure xml en utilisant le fichier text (remplacer ce qui est en gras par la traduction. l'objectif est d'avoir deux fichiers xml de même structure dans les deux langues.
mon code Perl:
open (FR, "<convention27.fr.xml") or die "impossible d'ouvrir le fichier $ : $!\n";
while ($line2=<FR>)
{
$line2 =~ s/ +/ /g;
if($line2 =~ />([^<]+)([<\/]+)/mg) #cette regexp reconnait tout le texte entre les balise xml
{
$m = $1;
print "$m\n";
@fr = split (/\n/,$m);
}
}
open (AR,"<:utf8","conv_fem.txt");
while ($line =<AR>)
{
if (length $line<=15) # j'ai enlevé les ligne dont j'ai pas besoin
{
$res = $line;
}
$line =~s/$res//g;
@ar = $line;
for ($i=0;$i<@fr;$i++)
{
$fr[$i]=$ar[$i];
}
$m = join ("\n",@fr);
print $m;
}
avec ce programme je remplace les deux listes.
Je peux même changer le texte du fichier xml sans le mettre dans une liste @fr.
je veux récupérer mon fichier xml de départ avec les modifications que je viens de faire sur la $m.
Merci pour ton aide
ldld
Messages postés
11
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2008
29 août 2008 à 21:58
29 août 2008 à 21:58
Salut,
Si vous avez des idées sur ma question sur modification de fichier XML par Perl?
merci d'avance
Si vous avez des idées sur ma question sur modification de fichier XML par Perl?
merci d'avance
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
30 août 2008 à 08:46
30 août 2008 à 08:46
Salut,
j'aurais besoin de tes 2 fichiers pour pouvoir t'aider
j'aurais besoin de tes 2 fichiers pour pouvoir t'aider
ldld
Messages postés
11
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2008
31 août 2008 à 00:46
31 août 2008 à 00:46
salut;
je t envoyé les deux fichiers xml et txt dans cjoint.com
texte_anglais_balise
et l'autre traduction
merci pour ton aide.
je t envoyé les deux fichiers xml et txt dans cjoint.com
texte_anglais_balise
et l'autre traduction
merci pour ton aide.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
31 août 2008 à 08:24
31 août 2008 à 08:24
Salut,
quand tu mets les fichiers sur cjoint.com 2 liens sont crées
il me faut ces deux liens, sinon je ne peux pas télécharger les fichiers.
en fait, pour être sur que le format ne souffre, vaut peut être mieux mettre les fichiers dans une archive (gzip, bzip2, zip, rar, etc.)
quand tu mets les fichiers sur cjoint.com 2 liens sont crées
il me faut ces deux liens, sinon je ne peux pas télécharger les fichiers.
en fait, pour être sur que le format ne souffre, vaut peut être mieux mettre les fichiers dans une archive (gzip, bzip2, zip, rar, etc.)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ldld
Messages postés
11
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
12 septembre 2008
31 août 2008 à 22:51
31 août 2008 à 22:51
voilà les deux crées suite à l'insertion des fichiers ds cjoint
https://www.cjoint.com/?iFwV5ZM02y pour le fichier texte
https://www.cjoint.com/?iFwXqNFKg4 pour le fichier Xml
a partir du fichier Xml je vx créer celui de la traduction.
Merci
https://www.cjoint.com/?iFwV5ZM02y pour le fichier texte
https://www.cjoint.com/?iFwXqNFKg4 pour le fichier Xml
a partir du fichier Xml je vx créer celui de la traduction.
Merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 sept. 2008 à 09:11
1 sept. 2008 à 09:11
Salut,
ok pour les fichiers
je vais regarder ce soir ;-)
ok pour les fichiers
je vais regarder ce soir ;-)