如何使用WSO2 DSS从DB2存储和检索XML数据
如何使用WSO2 DSS正确存储和访问数据库(IBM DB2)中的XML数据?如何使用WSO2 DSS从DB2存储和检索XML数据
我们有两列下面类似的表:
- ID整数
- XMLDATA XML
的xmlData
列包含实际的XML文档我想商店。
我已经成功地得到以下插入操作的工作:
<query id="insert_product" useConfig="DB2">
<sql>INSERT INTO product (XmlData) VALUES (:XmlData)</sql>
<param name="XmlData" sqlType="STRING"/>
</query>
插入工作正常,但实际的数据需要被包裹在一个讨厌的CDATA节:
<xmlData>
<![CDATA[
<product>
<code>acp</code>
<name>A cool product</name>
</product>
]]>
</xmlData>
我正在查询表使用以下查询:
<query id="get_product" useConfig="DB2">
<sql>SELECT id, xmlData FROM product WHERE id = :id</sql>
<result element="product">
<element column="id" name="id" xsdType="integer"/>
<element column="xmlData" name="xmlData" xsdType="string"/>
</result>
<param name="id" sqlType="INTEGER"/>
</query>
该查询工作正常,前该输出为XML列逃脱CEPT:
<product>
<id>1</id>
<xmlData>
<product>
<code>acp</code>
<name>A cool product</name>
</product>
</xmlData>
</product>
这是可以预料的,我猜,因为该列的DSS数据类型为string
。
数据以XML格式存储在数据库中(DB2验证它是否具有良好的格式)。
问题:
如何告诉DSS将列数据作为XML处理?在插入中不需要CDATA部分,输出不能被转义。
Dislaimer:
不用说,上面是一个简化的例子。存储在表中的实际XML是一个长而复杂的文档,需要部分理解。
我认为最简单的方法是将xmlData转换为XMLTABLE。
developerworks上的更多信息:Retrieving XML data in relational format。
然后你可以将其转换为一个复杂元素结果:Grouping Data into Complex Elements
希望它能帮助。
这并不能回答我的问题,即使用WSO2 DSS检索存储在数据库中的XML数据。您只是为数据的实际存储(和检索)提供另一种解决方案。使用这种方法,我遇到了与我的问题完全相同的问题。 – Kallja
@Kallja当然不会完全回答你的问题,因为AFAIK WSO2 DSS没有XML数据类型的输出映射。这是一个解决方法。在过去,我一直在寻找答案,这是我发现的与您的问题一样的最佳解决方案。使用这种方法,您不会遇到同样的问题,因为您的数据将以字符串和整数等映射数据类型显示。请试一试。 –
您是否想出了接受<值的解决方案? – zygimantus