В PL / SQL есть способ получить все узлы самой глубокой глубины?
Пример 1:
<responseObject>
<response>
<value1>A</value1>
<value2>B</value2>
<error>A11</error>
<response>
<responseObject>
Пример 2:
<responseObject>
<response1>A</response1>
<response2>B</response2>
<response4>D</response4>
<random>1</random>
<responseObject>
В примере 1 я хотел бы получить значение1, значение2 и ошибку. В примере 2 я хотел бы получить response1, response2, response4 и random. В настоящее время мой XPath настроен как '/responseObject/*/*'
, но во втором случае это не работает.
Пример кода:
DECLARE
lxml xmltype;
begin
lxml :=
xmltype('<responseObject>
<response>
<value1>A</value1>
<value2>B</value2>
<error>A11</error>
<response>
<responseObject>');
FOR test IN (
select tag,
VALUE
FROM xmltable('responseObject/*/*'
passing lxml
columns
tag VARCHAR2(128) path 'name()',
VALUE VARCHAR2(128) path '.'
) t
)
LOOP
dbms_output.put_line(test.tag || ' - ' || test.value);
END LOOP;
end;