2015-05-04 92 views
1

如何使用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> 
     &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部分,輸出不能被轉義。

Dislaimer:
不用說,上面是一個簡化的例子。存儲在表中的實際XML是一個長而複雜的文檔,需要部分理解。

+0

您是否想出了接受<值的解決方案? – zygimantus

回答

-1

我認爲最簡單的方法是將xmlData轉換爲XMLTABLE

developerworks上的更多信息:Retrieving XML data in relational format

然後你可以將其轉換爲一個複雜元素結果:Grouping Data into Complex Elements

希望它能幫助。

+0

這並不能回答我的問題,即使用WSO2 DSS檢索存儲在數據庫中的XML數據。您只是爲數據的實際存儲(和檢索)提供另一種解決方案。使用這種方法,我遇到了與我的問題完全相同的問題。 – Kallja

+0

@Kallja當然不會完全回答你的問題,因爲AFAIK WSO2 DSS沒有XML數據類型的輸出映射。這是一個解決方法。在過去,我一直在尋找答案,這是我發現的與您的問題一樣的最佳解決方案。使用這種方法,您不會遇到同樣的問題,因爲您的數據將以字符串和整數等映射數據類型顯示。請試一試。 –