【发布时间】:2015-10-15 13:20:03
【问题描述】:
我正在尝试从 xmltype 文档中提取 xml。
DECLARE
xmlData XMLType;
sDocumentId VARCHAR2(100);
sFormat VARCHAR2(100);
cData CLOB;
BEGIN
xmlData := XMLType( '<main>
<document_id>1234567</document_id>
<format>E66</format>
<data><Fname>ABCD</Fname><Lname>EFGD</Lname></data>
</main>');
SELECT ExtractValue(xmlData, '/main/document_id/text()'),
ExtractValue(xmlData, '/main/format/text()'),
ExtractValue(xmlData, '/main/data/text()')
INTO sDocumentId,
sFormat,
cData
FROM (SELECT xmlData FROM DUAL);
dbms_output.put_line(sDocumentId);
dbms_output.put_line(sFormat);
dbms_output.put_line(cData);
END;
如何得到这样的输出:
- DocumentId =
1234567 - sFormat =
E66 - cData =
<Fname>ABCD</Fname><Lname>EFGD</Lname>
【问题讨论】:
-
xmlData.Extract('/main/data/text()').getStringVal() 让你
<data> <Fname>ABCD</Fname> <Lname>EFGD</Lname> </data>接近,但还不够接近 ;) -
想出了获得 xml 片段的方法:
Extract(xmlData, '/main/data/node()').getStringVal()
标签: oracle plsql xmltype extract-value