Recuperar el valor de un elemento xml en Oracle PL SQL

¿Alguien sabe cómo recuperar los valores de<ZIPCODE> y<CITY> utilizando PL / SQL? He seguido un tutorial en la red, sin embargo, puede recuperar los nombres de los elementos, pero no sus valores. ¿Alguno de ustedes sabe cuál parece ser el problema? Ya he consultado a Google (el secreto bien guardado de Internet) sobre esto, pero no tuve suerte:

<Zipcodes>
  <mappings Record="4">
    <STATE_ABBREVIATION>CA</STATE_ABBREVIATION>
    <ZIPCODE>94301</ZIPCODE>
    <CITY>Palo Alto</CITY>
  </mappings>
</Zipcodes>

aquí está el código de muestra:

-- prints elements in a document
PROCEDURE printElements(doc DBMS_XMLDOM.DOMDocument) IS
    nl  DBMS_XMLDOM.DOMNodeList;
    n   DBMS_XMLDOM.DOMNode;
    len number;
BEGIN
    -- get all elements
    nl   := DBMS_XMLDOM.getElementsByTagName(doc, '*');

    len  := DBMS_XMLDOM.getLength(nl);

    -- loop through elements
    FOR i IN 0 .. len - 1 LOOP
        n := DBMS_XMLDOM.item(nl, i);

        testr := DBMS_XMLDOM.getNodeName(n) || ' ' || DBMS_XMLDOM.getNodeValue(n);

        DBMS_OUTPUT.PUT_LINE (testr);
    END LOOP;

    DBMS_OUTPUT.PUT_LINE ('');
END printElements;

Respuestas a la pregunta(2)

Su respuesta a la pregunta