【发布时间】:2016-07-19 16:57:08
【问题描述】:
我目前正在尝试弄清楚如何使用 plsql 从存储在我的数据库中的 xml CLOB 值中提取一些值。
我的 CLOB 值如下所示:
<map>
<entry>
<string>HeaderOne</string>
<string>
<linked-hash-map>
<entry>
<string>ID</string>
<string>81</string>
</entry>
<entry>
<string>Name</string>
<string>John</string>
</entry>
<entry>
<string>SecondName</string>
<string>Smith</string>
</entry>
<entry>
<string>Age</string>
<string>15</string>
</entry>
</linked-hash-map>
</string>
</entry>
<entry>
<string>HeaderTwo</string>
<string>
<linked-hash-map>
<entry>
<string>ID</string>
<string>81</string>
</entry>
<entry>
<string>ZIP</string>
<string>99999</string>
</entry>
<entry>
<string>Gender</string>
<string>M</string>
</entry>
</linked-hash-map>
</string>
</entry>
</map>
我尝试使用 EXTRAC(xmltype(myclob) 方法,如下所述: Extract data from XML Clob using SQL from Oracle Database
但这在我的情况下不起作用,因为<string> 标签不包含诸如“名称”或“键”之类的标识符,而是在实际值上方列出另一个<string> 条目。 IE。 <string>ID</string> 是通常使用 <string name='ID'>81</string> 的参数,在这种情况下,'81' 是我想要提取的实际值。
参数可以在 xml 中以任何顺序列出,但是我知道我希望提取的参数的名称。所以我的问题是,有没有办法从<string>Name</string> 条目中提取值(在本例中为“John”,但可以是任何值)
【问题讨论】:
-
所以
<entry>中<string>元素的顺序将决定它是属性名称还是属性值? -
是的,你猜对了