我在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
答案 0 :(得分:0)
您可以使用local-name()
XPath应该是,
//member/value/*[local-name()='CODE']
//member/value/*[local-name()='integer']
//member/value/*[local-name()='string']
在这种情况下,XPath应该是
//member[*='CODE']/*/*
//member[*='MSG']/*/*
答案 1 :(得分:0)
简短的回答是,您不要将数据库视为ETL(提取,转换,加载)工具。您要做的是将此XML文件传递给使用XPath的单独程序并以此方式处理它。数据库只应存储数据。事实上,过去5个月我一直在删除像这样的“异国情调”代码,这使得Oracle数据库需要72小时才能插入400k行。所以再次将其偏移到xpath
查询看起来几乎与上面的命令相同