这是一个愚蠢的 XPATH 问题。代码是 PL/SQL 但没关系。
lx_a := XMLTYPE('<rfs-graph><graphml>foo</graphml><rfs-graph>');
lx_b := lx_a.extract('/rfs-graph/graphml[1]');
dbms_output.put_line(lx_b.getStringVal());
运行时,结果是
<graphml>foo</graphml>
但是当这段代码运行时:
lx_a := XMLTYPE('<rfs-graph><graphml xmlns="abc">foo</graphml></rfs-graph>');
lx_b := lx_a.extract('/rfs-graph/graphml[1]');
dbms_output.put_line(lx_b.getStringVal());
它失败了,因为 lx_b 为空。
唯一的区别是 graphml 元素有一个属性。
无论它是否具有属性,如何选择 graphml 元素?