Bonjour,

je reviens vers vous à propos d'un problème que j'avais eu il y a quelques jours à propos de l'ajout ou de la suppression d'attributs dans un fichier xml. J'ai vu avec les tutos de Djibril qu'on pouvait uniquement charger en mémoire la ligne qu'on souhaitait. Après avoir parcouru plein de documentations et notamment le CPAN, je ne comprends pas comment cela est possible. Serait-il possible de me montrer comment avec l'exemple de fichier cité, je peux charger uniquement la ligne ENVELOPPE (l'entête). Le reste des lignes chargées ne me sert pas en réalité. Merci d'avance pour votre retour.

Citation Envoyé par flash21 Voir le message
Bonjour,

je cherche désespérément à modifier ou supprimer des attributs d'un fichier xml mais je n'y arrive pas. Ce qu'il me faudrait en fait, c'est à la lecture fichier aller modifier (ou supprimer) certains attributs d'une balise afin d'écrire le fichier résultat. J'arrive à écrire mon fichier en sortie mais les attributs ne sont pas modifiés. Pouvez-vous m'aider svp?
Ci-dessous mon code :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
#!/usr/bin/perl
 
use Carp;
use warnings;
use XML::Twig;
#use XML::LibXML;
use File::Temp qw(tempfile tempdir);
use Getopt::Long;
 
my ($repertoire, $fichier) = ();
GetOptions( 'fichier|i=s' => \$fichier, 'repertoire|d=s' => \$repertoire);
 
if(not defined $fichier or not defined $repertoire) {
  die "Fichier source ou répertoire de travail manquant!";
}
creation fichier resultat avec non unique
my($fh, $filename) = tempfile( "FILEOUT"."_". 'XXXXXXXX', SUFFIX => '.xml', DIR => $repertoire );
binmode $fh, ':encoding(UTF-8)';#UTF8 format
 
# Lecture
my $twig = XML::Twig->new( pretty_print => 'indented' );
$twig->parsefile($fichier);
my $twig_SHIPMENT_EXPECTED_INFORMATION = $twig->root->first_child('ENVELOPPE');
removeAttribute($twig_ENVELOPPE, "xmlns="http://www.secondsiteweb.com/WMSXMLMessages"");
=head1
Je n'arrive pas à supprimer ou modifier un attribut en particulier dans mon fichier xml
quelqu'un pourrait il m'aider?
exemple de fichier xml :
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ENVELOPPE xmlns:premier="http://www.siteweb/XMLDataTypes" xmlns="http://www.secondsiteweb.com/WMSXMLMessages" xmlns:troisieme="http://www.troisiemesiteweb.com/GateDataTypes" xmlns:quatrieme="http://www.w3.org/2001/XMLSchema-instance">
	<SequenceId>1</SequenceId>
	<DateDuJour>25</DateDuJour>
</ENVELOPPE>
 
J'aimerai avoir un fichier comme suit : 
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ENVELOPPE xmlns:premier="http://www.siteweb/XMLDataTypes" xmlns:ajout="http://www.secondsiteweb.com/WMSXMLMessages" xmlns:troisieme="http://www.troisiemesiteweb.com/GateDataTypes" xmlns:quatrieme="http://www.w3.org/2001/XMLSchema-instance">
	<SequenceId>1</SequenceId>
	<DateDuJour>25</DateDuJour>
</ENVELOPPE>
 
ou supprimer tout simplement le :  xmlns="http://www.secondsiteweb.com/WMSXMLMessages"
 
=cut
$twig->print($fh);
close $fh;