extraire des infos d'une fichier xml (en perl) - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 29-04-2009 à 22:22:06
Le shell est pas le meilleur moyen d'extraire des infos d'un fichier XML.
Perl est bien plus adapté, et c'est plutot simple ( XML::Simple même ) si tu t'inspire de cet exemple qu'il suffit de copier coller dans un (pseudo)terminal :
Code :
|
Si tu connais pas perl, il te suffit d'installer ce module si besoin avec la commande :
Code :
|
Code :
|
peux servir aussi ^^
Bon, en fait j'ai menti, on est resté en shell ^^ juste on a pas appelé un tools exotique, mais une valeure sure
Marsh Posté le 29-04-2009 à 23:15:34
à chaque fois je pense pas à perl...
alors mon fichier xml se présente sous cette forme :
<?xml version="1.0"?>
<Grisbi>
du coup je n'ai pas :
<?xml version="1.0" ?>
<!DOCTYPE Foobar>
<Foobar Version="1.0">
comme dans ton exemple, et en effet si je le rajoute pas cela ne fonctionne pas... c'est un peu embêtant mais bon
l'autre problème est que si j'ai plusieurs compte j'ai cette erreur : Not a HASH reference at -e line 1.
je pense qu'il faut gérer ça directement dans perl...
si t'as une solution surtout pour le premier problème je suis preneur
merci
Marsh Posté le 29-04-2009 à 23:46:56
Dit donc, toi t'a pas envie de chercher
Code :
|
Marsh Posté le 30-04-2009 à 08:39:28
merci ça marche, il me reste plus qu'à traîter l'erreur Not a HASH reference at -e line 1. mais ça c'est dut au faite qu'il y a plusieurs comptes, je suppose donc qu'une boucle est nécessaire, je vais creuser par là
merci de ton aide
--
alors en fait j'ai l'impression que le fichier xml est disons construit bizarrement...
voila la structure des comptes :
<compte>
<details>
<No_de_compte>0</No_de_compte>
<Solde_courant>1111</Solde_courant>
</detail>
<compte>
<compte>
...
donc en fait l'identifiant n'est pas dans la balise compte comme ça devrai l'être (il me semble), du compte se sait pas trop comment différencier et même afficher tous les soldes
Marsh Posté le 30-04-2009 à 21:08:45
à "brut pourpoint" comme ça, je te dirais d'essayer :
Code :
|
Marsh Posté le 01-05-2009 à 12:39:44
ReplyMarsh Posté le 04-05-2009 à 10:40:22
bonjour,
j'essaye maintenant, en perl, de n'afficher que 2 décimales à mon solde
je fais donc comme ceci :
printf ( "%.2f", $solde);
cela affiche bien deux décimales seulement elles sont toujours 00, même si mon solde est de 999,99, j'obtiens 999,00
Marsh Posté le 04-05-2009 à 22:31:07
Code :
|
6
Code :
|
Marsh Posté le 05-05-2009 à 09:52:36
en fait j'ai trouvé ça :
$maVariable =~ s/(,\d{2})\d*/$1/;
Marsh Posté le 29-04-2009 à 21:23:44
Bonsoir,
Pour ceux qui connaissent j'utilise le logiciel grisbi pour faire mes comptes.
Je voudrai extraire du fichier xml généré par grisbi les soldes de mes comptes et ceci en ligne de commande.
le fichier xml se présente comme ceci :
<Comptes>
<Compte>
...
<Solde_courant>99999999<Solde_courant>
...
</Compte>
...
</Comptes>
J'ai trouvé comme utilitaire xmllint, mais j'ai pas l'impression qu'il réponde à mes besoins.
Si vous avez une petite idée de comment je pourai m'en sortir
Merci
Message édité par dams78 le 04-05-2009 à 11:37:44
---------------
dam's (debianer), ma galerie Flickr