PLSQL 中的 XML 解析
Posted
技术标签:
【中文标题】PLSQL 中的 XML 解析【英文标题】:XML Parsing in PLSQL 【发布时间】:2016-03-05 22:18:47 【问题描述】:我有以下格式的 XML,需要将数据插入到表中。
数据是动态的,需要插入到 PL/SQL 表中。请您指导我如何解决这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Name SN="ABC" PID="PID1">
<Name SN="111" PID="P01" />
<Name SN="222" PID="P02" />
</Name >
<Name SN="PQR" PID="PID2">
<Name SN="100" PID="P04" />
<Name SN="200" PID="P05" />
<Name SN="300" PID="P05" />
<Name SN="400" PID="P06" />
</Name >
</Result>`
查询:
SELECT XXCSS_AUTOTEST_INPUT_OBJ (
SUBSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
1)
+ 1,
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
2)
- INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
1)
- 1),
SUBSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
5)
+ 1,
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
6)
- INSTR (
EXTRACT (VALUE (P), '/Device').getstringval (),
'"',
1,
5)
- 1))
BULK COLLECT INTO p_auto_test_out
FROM TABLE (
XMLSEQUENCE (EXTRACT (l_xml_file, '//Result/Device'))) P;
我能够读取前两个标签 ABC 和 PQR,但无法读取子标签。
【问题讨论】:
错误是什么?你也可以发布你的sql吗? 感谢您的回复。我正在使用下面的 SQL 【参考方案1】:这里是可能对您有所帮助的示例 SQL。根据您的需要进行调整。网上有很多关于在 SQL 中查询 xml 的文档。您可以按照这些示例编写复杂的查询。
Declare @xml XML ='<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Name SN="ABC" PID="PID1">
<Name SN="111" PID="P01" />
<Name SN="222" PID="P02" />
</Name >
<Name SN="PQR" PID="PID2">
<Name SN="100" PID="P04" />
<Name SN="200" PID="P05" />
<Name SN="300" PID="P05" />
<Name SN="400" PID="P06" />
</Name >
</Result>'
SELECT mytable.mycol.value('(../@SN)[1]','VARCHAR(50)') [Parent SN],
mytable.mycol.value('(../@PID)[1]','VARCHAR(50)') [Parent PID],
mytable.mycol.value('(@SN)[1]','INT') [SN],
mytable.mycol.value('(@PID)[1]','VARCHAR(50)') [PID]
FROM @xml.nodes(N'/Result/Name/*') AS mytable(mycol)
【讨论】:
以上是关于PLSQL 中的 XML 解析的主要内容,如果未能解决你的问题,请参考以下文章