如何在PL/SQL中解析XML
我在pl/sql中有以下xml结构:如何在PL/SQL中解析XML,sql,xml,oracle,xpath,plsql,Sql,Xml,Oracle,Xpath,Plsql,我在pl/sql中有以下xml结构: <struct> <member> <name>CODE</name> <value> <integer>0</integer> </value> </member> <member> <name>MSG</name> <value>
<struct>
<member>
<name>CODE</name>
<value>
<integer>0</integer>
</value>
</member>
<member>
<name>MSG</name>
<value>
<string>Some message</string>
</value>
</member>
</struct>
您可以使用本地名称来实现这一点 XPath应该是
//member/value/*[local-name()='CODE']
例子:
//成员/值/*[local name='integer']
//成员/value/*[local name='string']
结果:
0
一些信息
更新:
在这种情况下,XPath应该是
//member[*='CODE']/*/*
//member[*='MSG']/*/*
结果:
0
一些信息
简单的回答是,您不会将数据库视为ETL提取、转换和加载工具。您要做的是将这个XML文件传递给一个单独的程序,该程序使用XPath并以这种方式处理它。数据库只应存储数据。事实上,在过去的5个月里,我一直在删除类似这样的外来代码,这些代码使Oracle数据库需要72个多小时才能插入40万行。因此,再次将其转移到xpath
查询看起来与上面的命令几乎相同使用示例,我只能过滤整数/字符串等等。但我需要使用//成员/名称进行筛选value@DigitalGod:更新了答案。现在我得到了正确的筛选器,但值错误-0而不是0@DigitalGod:Xpath是//成员[*='CODE']/*/*/text在当前情况下,我只能使用存储过程。
//member[*='CODE']/*/*
//member[*='MSG']/*/*