ORA-30625: method dispatch on NULL SELF argument is disallowed
Cause: A member method of a type is being invoked with a NULL SELF argument.
Action: Change the method invocation to pass in a valid self argument.
Well i was trying to parse an XML with multiple namespaces and was using EXISTSNODE function. When traversing between nodes and subnodes i forgot to remove a subnode name and the XPATH formed was incorrect:
l_xmltype := xmltype (l_doc) ;
l_index := 1;
v_count := l_xmltype.existsnode (
'ns1:NewSubscriptionNotificationRequest/subscriptionInfo/subscriptionKey/subscriptionInfo [' || to_char (l_index
) || ']', v_namespaces);
dbms_output.put_line ('------' || v_count);
--
WHILE l_xmltype.existsnode (
'ns1:NewSubscriptionNotificationRequest/subscriptionInfo [' || TO_CHAR (l_index
) || ']', v_namespaces) > 0
LOOP
l_value := l_xmltype.extract (
'ns1:NewSubscriptionNotificationRequest/subscriptionInfo [' || to_char (
l_index) || ']/duration/text()', v_namespaces) .getstringval () ;
dbms_output.put_line ('-------------> ' || l_value) ;
--
l_index := l_index + 1;
END LOOP;
This error is same as the evil NULL POINTER EXCEPTION in JAVA....
Just correcting the subnode path (remove subscriptionInfo from EXISTSNODE) to represent right structure helped resolve this problem.
Many thanks to A_Non On XML for his detailed explanation and examples on this blog about XML parsing. I hope he does not mind a well deserved praise.
No comments:
Post a Comment