如何使用PL / SQL

时间:2016-04-07 13:57:58

标签: xml plsql oracle11g xmltype

我在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格式正确。

1 个答案:

答案 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