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) :
La commande suivante ne renvoie que les textes des éléments :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Peut-être faut-il utiliser la commande node() quelque part ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part xidel.exe input.gpx --extract "//trk/trkseg"
C'est sans doute très simple quand on connait, mais…
Merci pour toute aide.
---
Edit: Still nogo…
---
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part xidel input.gpx -e "//trkseg/*/outer-xml(.)"
Partager