You may try below. Please note, in your case XMLSEQUENCE is giving you VARRAY of top level nodes, hence INTO alone may not suffice.
DECLARE
TYPE l_obj IS RECORD
(
name VARCHAR2 (200),
state VARCHAR2 (200),
city VARCHAR2 (200)
);
TYPE l_list_table IS TABLE OF l_obj;
l_list l_list_table;
x XMLTYPE := XMLTYPE ('<?xml version="1.0" ?>
<person>
<row>
<name>Tom</name>
<Address>
<State>California</State>
<City>Los angeles</City>
</Address>
</row>
<row>
<name>Jim</name>
<Address>
<State>California</State>
<City>Los angeles</City>
</Address>
</row>
</person>');
BEGIN
SELECT EXTRACTVALUE (VALUE (p), '//name/text()'),
EXTRACTVALUE (VALUE (p), '//Address/State/text()'),
EXTRACTVALUE (VALUE (p), '//Address/City/text()')
BULK COLLECT INTO l_list --please use LIMIT clause
FROM TABLE (XMLSEQUENCE (EXTRACT (x, '/person/row/*'))) p;
FOR idx IN l_list.FIRST .. l_list.LAST
LOOP
DBMS_OUTPUT.put_line (l_list(idx).name ||', '|| l_list (idx).state || ', ' || l_list (idx).city);
END LOOP;
END;