【发布时间】:2015-05-13 22:21:39
【问题描述】:
如何使用 WSO2 DSS 在数据库 (IBM 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 列的输出被转义:
<product>
<id>1</id>
<xmlData>
<product>
<code>acp</code>
<name>A cool product</name>
</product>
</xmlData>
</product>
我猜这是意料之中的,因为该列的 DSS 数据类型是 string。
数据以 XML 格式存储在数据库中(DB2 验证它的格式是否正确)。
问题:
如何告诉 DSS 将列数据作为 XML 处理?插入中不需要 CDATA 部分,并且不得转义输出。
免责声明:
不用说,上面是一个简化的例子。实际存储在表中的 XML 是一个长而复杂的文档,只需部分理解即可。
【问题讨论】:
-
你有没有想出解决方案来接受<价值观?