#1 Le 29/02/2016, à 16:13
- jean-luc5629
[RESOLU] Extraction de plusieurs données d'un fichier xml
Bonjour;
Je patine entre pleins de tests avec awk ou sed...et rien ne va...
J'ai un fichier xml duquel je voudrais extraire quelques données mais sous forme de tableau sous cette forme :
titre;titre original;path;year
titre1;titre original1;path;year
etc...
Avec ceci :
sed -n -r 's%<title>(.*)<\/title>%\1%p' ~/videodb.xml >>fichier-titre
J'arrive à extraire mais dans un fichier séparé pour titre, chemin, année et de coller les données de chaque fichier (4 en tout..) dans un tableur...mais ce n'est pas top...je voudrais récupérer le tout dans un même fichier
Voici le schéma succinct de mon xml de 22000 lignes :
<videodb>
./...bla-bla
<movie>
<title>titre</title>
<originaltitle>titre original</originaltitle>
<rating>xxxxx</rating>
<userrating>xx</userrating>
<epbookmark>xxxx</epbookmark>
<year>2015</year>
<top250>xxx</top250>
<votes>xxxx</votes>
<outline></outline>
./...bla-bla
<file></file>
<path>path</path>
<filenameandpath>xxxxxxx</filenameandpath>
<basepath>xxxxxx</basepath>
./...bla-bla
</movie>
<movie>
<title>titre2</title>
<originaltitle>titre original2</originaltitle>
<rating>xxxxx</rating>
<userrating>xx</userrating>
<epbookmark>xxxx</epbookmark>
<year>2015</year>
<top250>xxx</top250>
<votes>xxxx</votes>
<outline></outline>
./...bla-bla
<file></file>
<path>path</path>
<filenameandpath>xxxxxxx</filenameandpath>
<basepath>xxxxxx</basepath>
./...bla-bla
</movie>
...etc...
</videodb>
Merci d'avance pour vos pistes...
Dernière modification par jean-luc5629 (Le 29/02/2016, à 23:04)
Hors ligne
#2 Le 29/02/2016, à 16:35
- credenhill
Re : [RESOLU] Extraction de plusieurs données d'un fichier xml
hello
$ awk -F "[<>]" '/<title>/ {t=$3} /<originaltitle/ {to=$3} /<year/ {y=$3} /<path>/ {p=$3} /<\/movie>/ {print t ";" to ";" p ";" y}' fichier.xml
titre;titre original;path;2015
titre2;titre original2;path;2015
Hors ligne
#3 Le 29/02/2016, à 18:50
- carreti
Re : [RESOLU] Extraction de plusieurs données d'un fichier xml
Hello,
le CSV et le XML sont des formats tellement anciens et courants que tous plein d'outils et de méthodes existent déjà.
Il est même fort probable suivant l'application destinataire qu'il existe déjà un module d'importation XML (Si c'est un tableur)
Un exemple d'outil en Python parmi tant d'autres : https://pypi.python.org/pypi/xmlutils
On peut même utiliser le PHP en ligne de commande (CLI) et les fonctions PHP pour manipuler et transformer facilement et de façon fiable le XML.
Personnellement j'aime bien le XQuery pour m'amuser avec le XML et transformer le résultat en JSON. Même Windows, en powershell sait faire tout ça ...
Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...
Hors ligne
#4 Le 29/02/2016, à 23:04
- jean-luc5629
Re : [RESOLU] Extraction de plusieurs données d'un fichier xml
hello
$ awk -F "[<>]" '/<title>/ {t=$3} /<originaltitle/ {to=$3} /<year/ {y=$3} /<path>/ {p=$3} /<\/movie>/ {print t ";" to ";" p ";" y}' fichier.xml titre;titre original;path;2015 titre2;titre original2;path;2015
Merci, ça marche...j'ai été obligé de réédité néanmoins le xml car il contenait des & " ' (caractères & " ') et donc avec les ; en séparateur...ça déconnait...mais une fois corrigé : ok.
Sinon j'avais déjà essayé de l'intégrer dans un tableur, mais j'avais l'erreur : "la source xml ne fait pas référence à un schéma..."
Ok, encore merci, je marque résolu..
Hors ligne