1

我在 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>

如何使用名称标签中的文本提取路径 /member/value/some_type 中的值?我的意思是这样的:

extract('//member/value/*[filter name tag = CODE]').getStringValue
4

2 回答 2

0

您可以使用local-name()

XPath 应该是,

//member/value/*[local-name()='CODE']

例子:

  1. //member/value/*[local-name()='integer']
  2. //member/value/*[local-name()='string']

结果:

  1. 0
  2. 一些讯息

更新:

在这种情况下,您的 XPath 应该是

//member[*='CODE']/*/*
//member[*='MSG']/*/*

结果:

  1. 0
  2. 一些讯息
于 2012-12-25T12:53:50.813 回答
0

简短的回答是您不会将数据库视为 ETL(提取、转换、加载)工具。您要做的是将此 XML 文件传递​​给使用 XPath 的单独程序并以这种方式处理它。数据库只应该存储数据。事实上,在过去的 5 个月里,我一直在删除像这样的“异国情调”代码,这些代码使得 Oracle 数据库需要 72 多个小时才能插入 400k 行。所以再次将此偏移到xpath

该查询看起来与您上面的命令几乎相同

于 2012-12-25T12:55:59.037 回答