Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PL/SQL中解析XML_Sql_Xml_Oracle_Xpath_Plsql - Fatal编程技术网

如何在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>

我在pl/sql中有以下xml结构:

<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']/*/*