Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/02/2016, à 17: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 01/03/2016, à 00:04)

Hors ligne

#2 Le 29/02/2016, à 17: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, à 19: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 01/03/2016, à 00:04

jean-luc5629

Re : [RESOLU] Extraction de plusieurs données d'un fichier xml

credenhill a écrit :

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 &amp; &quot;  &apos; (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