#
# Utility Functions to output XML
#
#
xml_escape () {
local res="$2"
res=${res/\&/\&}
res=${res/\"/\"}
res=${res/\'/\'}
res=${res/\</\<}
res=${res/\>/\>}
eval "${1}=\"${res}\""
}
xml_element () {
if [ -z $1 ]; then
echo "ERROR: missing element name"
return -1
fi
local count=1
local tag=""
local data=""
local val=""
for i in $@ ; do
if [ $count = 1 ]; then
xml_escape "tag" "${i}"
printf "<${tag}"
elif [ $((count % 2)) -eq 0 ]; then
xml_escape "data" "${i}"
else
xml_escape "val" "${i}"
printf " ${data}=\"${val}\""
data=""
fi
let ++count
done
if [ ! -z ${data} ]; then
printf ">${data}</${tag}"
else
printf "/>"
fi
return 0
}
start_xml_element () {
if [ -z $1 ]; then
echo "ERROR: missing element name"
return -1
fi
local count=1
local tag=""
local data=""
local val=""
for i in $@ ; do
if [ $count = 1 ]; then
xml_escape "tag" "${i}"
printf "<${tag}"
elif [ $((count % 2)) -eq 0 ]; then
xml_escape "data" "${i}"
else
xml_escape "val" "${i}"
printf " ${data}=\"${val}\""
data=""
fi
let ++count
done
if [ ! -z ${data} ]; then
echo "ERROR: missing value for attribute ${data}"
return -1
fi
printf ">"
return 0
}
close_xml_element () {
if [ -z $1 ]; then
echo "ERROR: missing element name"
return -1
fi
local tag=""
xml_escape "tag" "${1}"
printf "</${tag}>"
return 0
}
# ex:ts=4:et: