【发布时间】:2019-09-06 12:52:43
【问题描述】:
我必须将一些 xml 结构传递到 cdata,它被插入到 soap:Envelope 结构中。现在我有一些函数可以生成 xml 结构:
declare function local:getRequest($bd as element(fml:FML32)) as element (request)
{
<request>
<requestAttributes>
...
</requestAttributes>
</request>
};
当我尝试序列化这些数据时
<soapenv:Body>
<Request>
<requestId>{data(...)}</requestId>
<templateList>
<template>
<type>{data(...)}</type>
<data>
{ fn-bea:serialize(fn:concat('<![CDATA[',fn-bea:serialize(local:getRequest($body)),']]>'))}
</data>
</template>
</templateList>
</Request>
</soapenv:Body>
结果(目标服务中可见的数据)如下:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header/>
<soapenv:Body>
<Request>
<requestId>...</requestId>
<templateList>
<template>
<type>...</type>
<data>
<![CDATA[<tns:request><requestAttributes>...</requestAttributes></request>]]>
</data>
</template>
</templateList>
</Request>
</soapenv:Body>
</Envelope>
有没有可能得到这样的结果:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header/>
<soapenv:Body>
<Request>
<requestId>...</requestId>
<templateList>
<template>
<type>...</type>
<data>
<![CDATA[<tns:request><requestAttributes>...</requestAttributes></request>]]>
</data>
</template>
</templateList>
</Request>
</soapenv:Body>
</Envelope>
如何替换(使用 xuery)转义字符 andlt;和和gt;到 ?
【问题讨论】:
-
fn-bea:serialize转义特殊字符。您是否尝试过不序列化它?即,只是<data>{fn:concat('<![CDATA[',local:getRequest($body),']]>')}</data> -
结果几乎一样。如果没有序列化,我只有来自请求元素的数据:<![CDATA[...]]>
-
你成功了吗?
标签: oracle soap xquery cdata osb