传递给请求信封的 Oracle OSB cdata
Oracle OSB cdata passed to reqest envelope
我必须将一些 xml 结构传递到插入到 soap:Envelope 结构中的 cdata 中。现在我有一些生成 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)转义字符和 lt;并且gt;到 < > ?
显然,自从 11.1.1.3 中的编辑器现在自动设置 CDATA 定义以来,OSB 中的 XPath 表达式编辑器已经有了更新。
尝试:
{fn-bea:serialize(local:getRequest($body))}
我必须将一些 xml 结构传递到插入到 soap:Envelope 结构中的 cdata 中。现在我有一些生成 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)转义字符和 lt;并且gt;到 < > ?
显然,自从 11.1.1.3 中的编辑器现在自动设置 CDATA 定义以来,OSB 中的 XPath 表达式编辑器已经有了更新。
尝试:
{fn-bea:serialize(local:getRequest($body))}