【问题标题】:How to store and retrieve XML data from DB2 using WSO2 DSS如何使用 WSO2 DSS 从 DB2 存储和检索 XML 数据
【发布时间】: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>
        &lt;product&gt;
            &lt;code&gt;acp&lt;/code&gt;
            &lt;name&gt;A cool product&lt;/name&gt;
        &lt;/product&gt;
    </xmlData>
</product>

我猜这是意料之中的,因为该列的 DSS 数据类型是 string

数据以 XML 格式存储在数据库中(DB2 验证它的格式是否正确)。

问题:
如何告诉 DSS 将列数据作为 XML 处理?插入中不需要 CDATA 部分,并且不得转义输出。

免责声明:
不用说,上面是一个简化的例子。实际存储在表中的 XML 是一个长而复杂的文档,只需部分理解即可。

【问题讨论】:

  • 你有没有想出解决方案来接受<价值观?

标签: xml db2 wso2dss


【解决方案1】:

我认为最简单的方法是将 xmlData 转换为 XMLTABLE

更多信息请访问 developerworks:Retrieving XML data in relational format

然后可以将其转换为复杂元素结果:Grouping Data into Complex Elements

希望对你有帮助。

【讨论】:

  • 这没有回答我的问题,即使用 WSO2 DSS 检索存储在数据库中的 XML 数据。您只是为数据的实际存储(和检索)提供了另一种解决方案。使用这种方法,人们会遇到完全相同的问题,我在我的问题中提出了这个问题。
  • @Kallja 当然它不能完全回答你的问题,因为 AFAIK WSO2 DSS 没有 XML 数据类型的输出映射。这是一种解决方法。过去我一直在寻找答案,这是我为像您这样的问题找到的最佳解决方案。使用这种方法,您不会遇到同样的问题,因为您的数据将显示为映射数据类型,如字符串和整数。请试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多