如何使用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是一个长而复杂的文档,需要部分理解。
您是否想出了接受<值的解决方案? – zygimantus