#1 Le 25/08/2012, à 20:56
- Jerem95
Extraire des données d'un fichier XML
Bonjour à tous,
Voilà j'aimerai bien extraire d'un fichier XML les différentes ressources ( soit url, ressource, et le name ) dont le <roles=Role_TOTO>
Voici le fichier XML
<configuration xmlns="http://xml.juniper.net/ive-sa/7.1R9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" iveData="1831" saData="1716">
<users>
<resource-profiles>
<web-profiles>
<web-profile>
<custom>
<url>http://10.3.4.6</url>
<webacl>
<rules>
<rule>
<name>Allow http://10.3.4.6:80/*</name>
<action>allow</action>
<resource>http://10.3.4.6:80/*</resource>
</rule>
</rules>
</webacl>
<rewriting-options>
<selective-rewriting>false</selective-rewriting>
</rewriting-options>
<bookmarks>
<bookmark>
<name>HTTP - 10.3.4.6</name>
<description></description>
<url>http://10.3.4.6</url>
<new-window>false</new-window>
<no-address-bar>false</no-address-bar>
<no-tool-bar>false</no-tool-bar>
<apply>all</apply>
<roles xsi:nil="true"/>
</bookmark>
</bookmarks>
</custom>
<name>HTTP - 10.3.4.6</name>
<description></description>
<roles>Role_TOTO</roles>
</web-profile>
<web-profile>
J'ai essayé avec un grep mais je n'ai pas trouver comment faire une conditiion ET.
Merci par avance
Hors ligne
#2 Le 26/08/2012, à 00:06
- darunia_goron
Re : Extraire des données d'un fichier XML
D'après le man,
$ man grep
Matching Control
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify
multiple search patterns, or to protect a pattern beginning with
a hyphen (-). (-e is specified by POSIX.)
Donc, je propose
grep -e "url" -e "resource" -e "name" nom_du_fichier
Après, j'imagine qu'il y a des outils plus adapté en bash qu'un simple grep pour parser du XML. Par exemple en C ou en Python, on utiliserai libxml2.
Dernière modification par darunia_goron (Le 26/08/2012, à 00:07)
Hors ligne
#3 Le 26/08/2012, à 14:27
- Jerem95
Re : Extraire des données d'un fichier XML
Merci beaucoup pour la réponse mais maintenant est-ce possible de dire que je veux tous ça mais seulement pour les Roles Role_TOTO car j'ai plusieurs rôle dans mon fichier XML
Edit :
Est-ce que ça sa pourrait être bon ?
grep -e "url" -e "resource" -e "name" WEb.txt --regex="Role_TOTO"
Merci
Dernière modification par Jerem95 (Le 26/08/2012, à 14:29)
Hors ligne
#4 Le 26/08/2012, à 14:46
- darunia_goron
Re : Extraire des données d'un fichier XML
Uniquement avec grep, je ne pense pas que ça soit possible. Il faut que tu utilises un outil prévu pour manipuler le XML.
Après une petite recherche :
$ apropos xml
dh_installxmlcatalogs (1) - install and register XML catalog files
foomatic-combo-xml (1) - <put a short description here>
foomatic-perl-data (1) - generate Perl data structures from XML
pdftohtml (1) - program to convert PDF files into HTML, XML and PNG images
update-xmlcatalog (8) - maintain XML catalog files
xmlcatalog (1) - Command line tool to parse and manipulate XML or SGML catalog files.
xmllint (1) - command line XML tool
xmllint semble faire l'affaire. Après, je ne sais pas l'utiliser donc je ne peux pas te dire quels arguments lui passer.
Hors ligne
#5 Le 26/08/2012, à 14:57
- Jerem95
Re : Extraire des données d'un fichier XML
Ok merci beaucoup pour ton aide, je vais voir cet outil ou sinon je ferai la bonne vielle methode du fichier ou je supprime ce dont j'ai pas besoin
Hors ligne