OVH Cloud OVH Cloud

un parseur pour bash ? Ou comment recuperer des infos d'un fichier xml avec bash ?

31 réponses
Avatar
martin
Bonjour,

Je cherche à récupérer certaine donnée d'un fichier xml en Bash.
Existe t'il un parseur ?
Si non, comment puis je faire ?

Par avance merci

Martin

10 réponses

1 2 3 4
Avatar
Youri
DINH Viêt Hoà wrote:

- et quelle est la différence entre un pigeon ?


Aucune, les deux pattes sont pareilles, surtout la gauche. Et en plus il ne sait
ni nager.

--
Youri

Avatar
ericb
et qu'il concerne tout langage, pas uniquement ceux qui sont
interprétés.


pourquoi pas


Ce qui va mener sur le débat suivant :


Où chercher quand on a besoin d'une définition correcte pour quelque
chose ayant trait à l'informatique ?

Avatar
Fabrice..Bacchella
On Sun, 23 May 2004 15:41:40 +0200, DINH Viêt Hoà
wrote:


Je retiens donc que c'est un terme générique, et qu'il concerne un
langage interprété. Vais me coucher moins bête :-p


et qu'il concerne tout langage, pas uniquement ceux qui sont
interprétés.


& fichiers de conf en gros tout fichier texte structuré. J'ai un doute
tout d'un coup. Est-ce qu'un parser remonte la grammaire ou il
s'arrête juste à la liste des tokens ?
En vérifiant dans le man de lex & yacc, il apparaît que c'est yacc qui
génère le parser. Donc un parser est un programme qui prend un flux
textuel & en analyse la grammaire. Quelqu'un a-t-il une définition
plus formelle ?

---
http://fba.homeip.net


Avatar
DINH Viêt Hoà

et qu'il concerne tout langage, pas uniquement ceux qui sont
interprétés.


& fichiers de conf en gros tout fichier texte structuré.


Dans ces deux cas, le contenu du fichier respecte la structure d'un
langage.

J'ai un doute tout d'un coup. Est-ce qu'un parser remonte la grammaire
ou il s'arrête juste à la liste des tokens ?


"parser" est également utilisé dans le cadre d'analyse grammaticale.
"parser" se traduit par "analyseur", on a :
- analyse lexicale (séparation des lexèmes)
- analyse grammaticale (structuration du langage)

--
DINH V. Hoa,

"sinon je suis le meilleur ingénieur du monde" -- Arsunik [2]


Avatar
Unknown
Suivant la complexité du fichier, tu peux t'en sortir d'un coup de awk,
ou bien tuu devra faire appel à un vrai parseur XML. Peux tu détailler
un peu plus?


Ce qu'il faudrait c'est un exemple de fichier et quels outils a t'on le
droit d'utiliser.

Avatar
manu
Unknown wrote:

parceque j'aime bien les gens du forum voila un petit parseur simpliste
écrit en bash pur que je viens de sortir.
Ca marche pour les fichiers xml du genre :
<OpenJBroker>
<DataFlow>
<Name>Flux 1</Name>
<QManager>ARIEL</QManager>
<QIn>QIN_FLUX1</QIn>
<QFailure>QFAILURE_FLUX1</QFailure>
...

voila le bout de code qui ramene la valeur pour le tag QManager, pour les
autres il suffit d'extrapoler un peu le code ca devrait aller.


Bon, en même temps, avec les outils adequats, y'a qu'à ecrire qu'on veut
/OpenJBroker/DataFLow/()

--
Emmanuel Dreyfus
A lire: 240 pages en français sur l'administration UNIX avec BSD
http://www.eyrolles.com/php.informatique/Ouvrages/9782212112443.php3


Avatar
Unknown
Je cherche à récupérer certaine donnée d'un fichier xml en Bash.
Existe t'il un parseur ?
Si non, comment puis je faire ?


parceque j'aime bien les gens du forum voila un petit parseur simpliste
écrit en bash pur que je viens de sortir.
Ca marche pour les fichiers xml du genre :
<OpenJBroker>
<DataFlow>
<Name>Flux 1</Name>
<QManager>ARIEL</QManager>
<QIn>QIN_FLUX1</QIn>
<QFailure>QFAILURE_FLUX1</QFailure>
...

voila le bout de code qui ramene la valeur pour le tag QManager, pour les
autres il suffit d'extrapoler un peu le code ca devrait aller.

#! /bin/bash
QMANAGER_D="<QManager>"
QMANAGER_F="</QManager>"
while read ligne
do
TAG=${ligne:0:${#QMANAGER_D}}
if [ "$TAG" = "$QMANAGER_D" ]
then QManager=${ligne:${#QMANAGER_D}:$((${#ligne}-${#QMANAGER_F}-${#QMANAGER_D}-1))}
fi
# recopier les 4 lignes d'avant pour chaque valeur à ramener.
done < dataflows.xml

j'insiste sur le fait que c'est en pur bash, ca serait plus lisible en
java mais moins marrant :)


Par avance merci


de rien.

Martin


Avatar
Unknown
#! /bin/bash
QMANAGER_D="<QManager>"
QMANAGER_F="</QManager>"
while read ligne
do
TAG=${ligne:0:${#QMANAGER_D}}



Petite précision, j'ai mis des variables pour qu'il soit facile de faire
un moteur générique avec quelques eval bien placés.

Avatar
Unknown
voila le bout de code qui ramene la valeur pour le tag QManager, pour les
autres il suffit d'extrapoler un peu le code ca devrait aller.


Bon, en même temps, avec les outils adequats, y'a qu'à ecrire qu'on veut
/OpenJBroker/DataFLow/()


Ouais mais c'est moins marrant. En plus la question était en "bash"
j'y ai répondu à moitié mais j'y ai répondu en bash :)


Avatar
Fabrice..Bacchella
On Sun, 23 May 2004 23:28:21 +0200, Unknown
wrote:

Je cherche à récupérer certaine donnée d'un fichier xml en Bash.
Existe t'il un parseur ?
Si non, comment puis je faire ?


parceque j'aime bien les gens du forum voila un petit parseur simpliste
écrit en bash pur que je viens de sortir.


<OpenJBroker>
<DataFlow>
<Name>Flux 1</Name>
<QManager/>
<QIn>QIN_FLUX1</QIn>
<QFailure>QFAILURE_FLUX1</QFailure>

Voila aussi du XML valide.
---
http://fba.homeip.net


1 2 3 4