Ну, похоже, я нашел ответ.Вероятно, не самый лучший ответ, поэтому, пожалуйста, прокомментируйте, если вы знаете лучший (и / или более правильный) способ!
Мое решение (опять же, вероятно, не лучшее решение) состояло в том, чтобы действительно обойти запрос XPATH.Я добавил некоторые подстановочные знаки и определения пространств имен, и все пошло оттуда.
Рабочий код
L_XML_DOC := dbms_xmldom.newDOMDocument(P_XML);
L_XPATH := '/soap:Envelope/soap:Body/*[namespace-uri()="https://www.customnamespacehost.com/webservicename"]/*/*[namespace-uri()=""]/*';
L_NL_RESULTS := dbms_xslprocessor.selectNodes(
dbms_xmldom.makeNode(L_XML_DOC)
, L_XPATH);
dbms_xmldom.writetobuffer(L_XML_DOC, L_TEMP);
prc_bjm(L_CODE_NAME, 'L_TEMP = ' || L_TEMP, SQLCODE);
if not DBMS_XMLDOM.ISNULL(L_NL_RESULTS) then
FOR RESULTS_REC IN 0 .. dbms_xmldom.getLength(L_NL_RESULTS) - 1 LOOP
L_N_RESULT := dbms_xmldom.item(L_NL_RESULTS, RESULTS_REC);
L_TEMP := dbms_xmldom.GETNODENAME(L_N_RESULT);
prc_bjm(L_CODE_NAME, 'L_TEMP = ' || L_TEMP, SQLCODE);
dbms_xslprocessor.valueOf(L_N_RESULT, 'text()', L_TEMP);
prc_bjm(L_CODE_NAME, 'L_TEMP = ' || L_TEMP, SQLCODE);
END LOOP;
else
prc_bjm(L_CODE_NAME, 'No nodes for: ' || L_XPATH || '(' || L_NS || ')', SQLCODE);
end if; -- if not DBMS_XMLDOM.ISNULL(L_NL_RESULTS)
Также, пожалуйста, прокомментируйте, если знаете, почему этот способ работает.Мне действительно кажется странным, что пространство имен (для узла GetMailDataResponse) определяется без псевдонима (пример: «мыло»). Я думаю, что моя первоначальная проблема исчезнет, если узел GetMailDataResponse был определен следующим образом:
<a:GetMailDataResponse xmlns:a="https://www.customnamespacehost.com/webservicename">