如何在PL / SQL中解析XML

时间:2012-12-25 12:49:37

标签: sql xml oracle xpath plsql

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

如何使用name标记中的文本提取path / member / value / some_type中的值? 我的意思是这样的:

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

2 个答案:

答案 0 :(得分:0)

您可以使用local-name()

来实现此目的

XPath应该是,

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

实施例

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

    1. 0
    2. 一些消息
    3. 更新:

      在这种情况下,XPath应该是

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

      结果:

      1. 0
      2. 一些消息

答案 1 :(得分:0)

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

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