Además de post-procesar la salida de:
xpath -q -e '//City/text()' inputfile
que es:
Paris
Lyon
Marseille
en cualquier número de maneras, incluyendo:
xpath -q -e '//City/text()' inputfile |
awk 'BEGIN {sq = "\047"; OFS = sq "," sq}
{a[$1] = NR}
END {
printf "[" sq;
for (i in a) {
printf "%s%s", d, i; d = OFS};
print sq "]"
}'
que da la salida:
['Lyon','Marseille','Paris']
puede usar mi versión modificada de xpath
.Dado que es un simple script de Perl, lo modifiqué para que tenga más control sobre el formateo de la salida. Con mi versión, puede hacer:
xpath -q -b "[" -p "'" -i "," -s "'" -a "]"$'\n' -e '//City/text()'
para obtener la salida deseada. Aquí está el mensaje de uso:
Usage:
xpath [options] -e query [-e query...] [filename...]
If no filenames are given, supply XML on STDIN.
You must provide at least one query. Each supplementary
query is done in order, the previous query giving the
context of the next one.
Options:
-q quiet Only output the resulting PATH
-b before use before instead of nothing.
-p prefix use prefix instead of nothing.
-s suffix use suffix instead of linefeed.
-i infix use infix instead of nothing.
-a after use after instead of nothing.
Puede download my version here.
No es exacto, pero es lo mismo [Cómo obtener una lista de cadenas de Dom4j Node.selectObject o Node.selectNodes] (http://stackoverflow.com/questions/4628647/how-to-get-a-list -of-string-from-dom4j-node-selectobject-o-node-selectnodes). Si desea un resultado de tipo de datos de secuencia, debe usar XPath 2.0 –
Buena pregunta, +1. Ver mi respuesta para una explicación y solución. :) –