我必须构建一个提供此xml流的sql查询。
<product sku="B8B301">
<descriptif_court>
<![CDATA[<p>1 activité de sport de glisse </p>
<p>Pour 1 à 4 personnes</p>
<p>110 activités de sport de glisse: jet-ski, wakeboard, airboard, motoneige, sky fly…</p>]]>
</descriptif_court>
</product>
但是我不知道这样做。
我尝试
SELECT XMLSERIALIZE(
DOCUMENT
xmlelement(
NAME product,
XMLATTRIBUTES (a.sku AS sku),
xmlconcat(
xmlelement( NAME descriptif_court, concat('<![CDATA[', a.descriptif_court, ']]>'))
)
) AS TEXT
)
FROM (
SELECT
b.code AS sku,
b.short_description
FROM box b
where b.code='B8B301'
) a
结果是:
<product sku="B8B301">
<descriptif_court>
<![CDATA[<p>1 activité de sport de glisse </p>
<p>Pour 1 à 4 personnes</p>
<p>110 activités de sport de glisse: jet-ski, wakeboard, airboard, motoneige, sky fly…</p>]]>
</descriptif_court>
</product>
我不想在<![CDATA[ ... ]]>
内转义xml标签
有什么主意吗? 谢谢
答案 0 :(得分:1)
您可以通过传递xmlelement()
数据而不是content
来明确告诉xml
text
参数已经是格式良好的XML,从而使该函数没有去转义内容。因此,在查询的上下文中,您只需要将concat()
的结果强制转换为xml
:
...
xmlconcat(
xmlelement( NAME descriptif_court,
concat('<![CDATA[', a.descriptif_court, ']]>')::xml
)
)
...