Here a little script i commited yesterday for personal use.
Code:
XmlRead () { # [1:(-v:verbose)] 2:branch to explore 3:Tag de fin
ReadTag () {
read L || return 1
T=$(echo ${L%%>*>} | sed -e 's/[<>]//g' -e 's/:/_/g')
}
[ -n "$3" ] && OPT="$1" && shift
local T=""
local V=""
while ReadTag
do
[[ $T = $2 ]] && break
[[ $T != $1 ]] && continue
[ "$OPT" = "-v" ] && echo "Tag: $T"
while ReadTag
do
[[ $T = "/$1" ]] && break
V=$(echo $L | sed s/"<[^>]*>"/""/g)
if [[ -n "$V" ]]
then eval "$T=\"$V\""
[ "$OPT" = "-v" ] && echo "$T=$V"
else [ "$OPT" = "-v" ] && echo "Tag: $T"
fi
done
[ "$OPT" = "-v" ] && echos 50 "-"
return 0
done
return 1
}