1 pièce(s) jointe(s)
[Xidel/XMLStarlet] Récupérer élements et leur contenu ?
Bonjour,
Je connais à peine XPath/XQuery/CSS, et je tente d'apprendre à utiliser soit Xidel soit XMLStartlet pour manipuler des fichiers XML en ligne de commande.
Dans le XML suivant, j'ai besoin de 1) récupérer tous les élements <trkpt> et leur contenu afin de 2) les fusionner en un seul segment (trkseg) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?xml version="1.0" encoding="UTF-8"?>
<gpx>
<metadata>
<name>Some name</name>
</metadata>
<trk>
<name>Track 1</name>
<trkseg>
<trkpt lat="48.81782" lon="2.24906">
<ele>37.5</ele>
</trkpt>
<trkpt lat="48.81784" lon="2.24906">
<ele>37.5</ele>
</trkpt>
</trkseg>
</trk>
<trk>
<name>Track 2</name>
<trkseg>
<trkpt lat="48.81782" lon="2.24906">
<ele>37.5</ele>
</trkpt>
<trkpt lat="48.81784" lon="2.24906">
<ele>37.5</ele>
</trkpt>
</trkseg>
</trk>
</gpx> |
La commande suivante ne renvoie que les textes des éléments :
Code:
xidel.exe input.gpx --extract "//trk/trkseg"
Peut-être faut-il utiliser la commande node() quelque part ?
C'est sans doute très simple quand on connait, mais…
Merci pour toute aide.
Pièce jointe 639244
---
Edit: Still nogo…
Code:
1 2 3 4 5
| xidel -s input.gpx -e "//trk/trkseg"
xidel -s input.gpx -e "//*[contains(text(), 'trkpt')]
xidel -s input.gpx -e "//*[contains(node(), 'trkpt')]
xidel -s input.gpx -e "//*[contains(local-name(), 'tkrpt')]
xidel -s input.gpx -e "//*[contains(name(), 'trkpt')] |
---
Edit: Par défaut, les éléments eux-même sont ignorés en sortie
Code:
xidel input.gpx -e "//trkseg/*/outer-xml(.)"