quelqu'un peut il m'aider a faire le parsage de ce fichier de manier a ce qu'il retourne juste les Names et les values. j'ai ecrit un code qui malheureusement ne fonctionen pas. Merci
<?xml version="1.0" encoding="UTF-8"?>
<Profile origin="get" version="2.1" date="2013.05.20">
<Catalog id="sys" version="2.1">
<Parameter name="prim" value="2"/>
<Parameter name="second" value="3"/>
<Parameter name="copy" value="4"/>
<Parameter name="force" value="1"/>
<Parameter name="always" value="0"/>
<Parameter name="type" value="5" Type="False"/>
<Parameter name="memory" value="allow"/>
</Catalog>
</profile>
# en Python, avec lxml et objectify, par exemple ?
Posté par palm123 (site web personnel) . Évalué à 2.
tu peux montrer ton code ?
ウィズコロナ
[^] # Re: en Python, avec lxml et objectify, par exemple ?
Posté par Henri . Évalué à 1. Dernière modification le 02 avril 2015 à 16:57.
# po
Posté par Henri . Évalué à 1.
j#
'aimerai qu'il me retourne cela en ligne comme le suivant :
prim,second,copy,forced,always,type,memory,name1,name2,………
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 2.
Avec XML::Twig, je ferais comme ça :
ce qui donne :
prim,2,second,3,copy,4,force,1,always,0,type,5,memory,allow,
Ne resterait plus qu'à nettoyer la virgule finale.
Après, comme toujours en Perl, il y a d'autres manières de faire.
[^] # Re: po
Posté par Henri . Évalué à 1.
ca fonctione merci bien , c'est tres gentil de votre part, et si je voulais qu'il me retourne aussi le nom du fichier , pourrai je ajoute. je dis dans le fait que je voudrais qu'il me retourne comme suit, sachant le fichier est sauvegarder sous le nom compute_sys.xml. serait tres gentil de votre part. Merci
compute,prim,2,second,3,copy,4,force,1,always,0,type,5,memory,allow,
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 1.
Juste avant le
parsefile
, tu écris unprint
de ton nom de fichier suivi par une virgule et tu auras le résultat souhaité.[^] # Re: po
Posté par Henri . Évalué à 1. Dernière modification le 03 avril 2015 à 14:07.
j'espere que cest ce que vous vouliez dir
print $FhResult 'd100spuptl25e0_sysdumpdev.txt,' ;
$twig->parsefile('d100spuptl25e0_sysdumpdev.txt');
il me produit certe un resultat mais avec une erreur elle est la suivante:
C:\Users\IBM_ADMIN\Documents>perl new2.pl
mismatched tag at line 12, column 5, byte 626 at C:/strawberry/perl/site/lib/XML
/Parser.pm line 187.
at new2.pl line 17.
at new2.pl line 17.
[^] # Re: po
Posté par Henri . Évalué à 1.
voici un code permetant de separe les chaines de caractere mes comment l'inserer dans mon code plus haut de maniere a se qu'il me retourne une partie du nom sous lequel mon fichier a ete sauvegarde et ainsi que les names et les values.
my $data = 'd100spuptl25e0_sysdumpdev.txt';
(@part) = split(/_/,$data,2);
print $part[0];
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 1.
si j'ai bien compris (ce dont, je ne suis pas sûr), mettre ce genre de chose avant le
parsefile
:[^] # Re: po
Posté par Henri . Évalué à 1.
Merci bien ca fonctione. j'avais encore une question surtou faut pas dire que celui si il pose trop de question. au fait si vous voyez mon code Les fichiers on ete declarer, existe il un moyen que je puisse sur l'editor de perl-stwaberry d'appele mes Fichiers, sans toute fois devoir les declare dans mon code , si je demande c'est parceque j'ai trop de fichier et je n'aimerai pas tous les ecrire dans mon code mais juste pouvoir les a partir der l'editor de Perl-Strawberry les appeles.
Merci
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 1.
il faut pour ça que tu t'intéresses au tableau
@ARGV
. La documentation est là : http://perldoc.perl.org/perlvar.htmlsi tu appelles ton script perl comme ça.
le nom de ton fichier.xml peut être récupéré dans ton script.
[^] # Re: po
Posté par Henri . Évalué à 1.
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 1.
Oui, c'est ce que je voulais dire.
Pour ton erreur, elle me semble assez explicite :
C'est ton fichier XML qui est mal formé ; s'il est exactement comme celui que tu montres dans ta question initiale, c'est ta balise
<Profile>
qui n'est jamais fermée. Il y a bien une balise fermante</profile>
, mais ce n'est pas la même casse (un p minuscule au lieu d'une capitale), donc ton analyseur syntaxique est complètement perdu. D'où l'erreur.[^] # Re: po
Posté par Henri . Évalué à 1.
merci bien j'en ai fait la remarque
[^] # Re: po
Posté par Henri . Évalué à 1.
Salut Nicolas j'aimerai que tu me viennes une fois de plus en aide:
j'aimerai change le code de maniere a ce qu'il me retourne quelque chose d'autre , auf fait j'execute mon code sur un Premier fichier (fichier de reference) qui nous retourne juste les names prim, second,copy,force,always, type, memory ensuite j'execute parallement sur un second fichier qui examine chaque fois si a chaque name correspond une value et me le retourne dans un exemple suivant 2, 3, 4, 1, 0, 5, allow dans le cas ou il ya un name qui 'a pas de correspondance value il doit me retourne dans le champs correspondant fault voici un apercu 2, fault, 3, 4, 1, fault, 0.
[^] # Re: po
Posté par Nicolas Casanova . Évalué à 1.
Ce serait plus parlant si tu montrais un exemple de ton fichier référence et un exemple de ton second fichier. Parce que là, j'ai pas compris grand-chose.
[^] # Re: po
Posté par Henri . Évalué à 1. Dernière modification le 09 avril 2015 à 21:10.
voici mon fichier de reference il est le meme que celui plus haut, delui j'en ai besoin que des names et le parser sur l# attribut nom nous retourne: prim, second, copy, forced, always, Type, memory
voici un fichier quelconque il possede par example un parametre de moins, plus presicement le Parameter name="type" value="5" Type="False" que le fichier de reference
maintenant il doit me retourner en comparaisons avec le fichier de reference la suivante:
ca veut dire que dans le cas il ne trouve pas correspondance (value) il ecrit a ce lieu fault, a defaut il retourne ce qui ci trouve comme value.
Merci bien de votre aide, s'il ya quelque chose a demande , pardon n'hesite pas.
[^] # Re: po
Posté par Henri . Évalué à 1. Dernière modification le 09 avril 2015 à 21:12.
salut j'ai ecrit le code de la maniere suivante twig1 qui nous permet le parser du fichier1 et retourne juste les Atributs name et twig2 qui permet le parser du fichier2 et retourne jsute le values, maintenant j'aimerai que dans le twig2 on ecrive une Loop qui permettra d'ecrire "fault" dans le cas ou il ne trouverai pas de corespondance value avec le Fichier2 a defaut il me donne la value correspondante.
[^] # Re: po
Posté par Henri . Évalué à 1.
persone ici ne peut m'aider ? comme je l'ai dis par ailleur j'ai le code plus haut et j'aimerai losrque dans mon datei un parametre ne possede pas d#attribut value , qu'il me retourne a ce niveau "fault"
[^] # Re: po
Posté par Henri . Évalué à 2. Dernière modification le 13 avril 2015 à 21:59.
Salut Nicola ,
juste pour te dire que j'ai reussi voila le code
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.