Recuperar o valor de um elemento xml no Oracle PL SQL

Alguém sabe como recuperar os valores de<ZIPCODE> e<CITY> usando PL / SQL? Eu segui um tutorial pela rede, no entanto, ele pode recuperar os nomes dos elementos, mas não seus valores. Algum de vocês sabe o que parece ser o problema? Eu já consultei o Google (o segredo bem guardado da Internet) sobre isso, mas sem sorte:

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

aqui está o código de exemplo:

-- 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;

questionAnswers(2)

yourAnswerToTheQuestion