我在l_xml_content
变量中加载了CLOB列中格式良好的XML。
XML看起来像
<?xml version="1.0" encoding="UTF-8"?>
<peci:Workers_Effective_Stack xmlns:peci="urn:com.workday/peci">
<tag1>
...
</tag1>
我能够获得名称空间urn:com.workday/peci
。
我使用此代码获取整个XML
DECLARE
l_xml_data XMLType;
l_xml_content CLOB;
BEGIN
SELECT clob_xml INTO l_xml_content FROM my_table;
l_xml_data := XMLType( l_xml_content );
DBMS_OUTPUT.put_line( 'NameSpace = ' || l_xml_data.getNamespace );
END;
结果是
NameSpace = urn:com.workday / peci
如何获取命名空间的第一部分? xmlns:peci=
你怎么命名这部分?
我对XML一无所知。我只假设XML格式正确。
答案 0 :(得分:0)
我不确定你为什么要这样做,但这个例子似乎有效:
WITH xdata AS
(SELECT xmltype('
<peci:Workers_Effective_Stack xmlns:peci="urn:com.workday/peci">
<tag1>
stuff
</tag1>
</peci:Workers_Effective_Stack>') data
FROM dual
)
SELECT regexp_substr(extract(data,'/*[local-name()="Workers_Effective_Stack"]').getstringval(),'[" "](.*)[=]')
FROM xdata