All pastes #472745 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-05 19:57 UTC
rendered paste body
#
# Utility Functions to output XML
#
#


xml_escape () {

    local res="$2"

    res=${res/\&/\&}
    res=${res/\"/\"}
    res=${res/\'/\'}
    res=${res/\</\&lt;}
    res=${res/\>/\&gt;}

    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: