微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle 插入 XML 参数未在 Mule 中验证

如何解决Oracle 插入 XML 参数未在 Mule 中验证

我在 Oracle XMLTYPE 列中有一个插入语句。当我在 Oracle 中运行它时,它工作正常。但是,如果我将相同的内容放在 Mule 中,则它不会验证。

我的 XML 是

'<DRIVEResponse><Loan><Condition ActionStep="parties. &amp;lt;A href=''ABC.com/abc/''"/> 
 </Loan>
 </DRIVEResponse>'

这是我放在数据库插入中的内容

 {
'RESPONSE_XML' : '<DRIVEResponse><Loan><Condition ActionStep="parties. 
 &amp;lt;A href=''ABC.com/abc/''"/> </Loan></DRIVEResponse>','SUCCESS_FLAG' : "Y"
 }

我收到的错误

- Invalid input ''',expected `}` or ',' for the object expression.

(第 2 行,第 88 列):

查询文本来自 java 类。同样的 Query 文本发送到一个 spring boot 服务,插入发生在那里。但是在骡子中,我收到了如图所示的错误。如果我在 sql Developer 中运行这个查询,它的运行和插入记录。

enter image description here

更新:- 使用硬编码 XML 插入语句,工作正常。 但是如果我将它放在一个转换中并将该变量带入查询中,它就会失败。即使我与硬编码值完全匹配,如果我将它放在变量中,它也会失败。

硬编码 - 工作正常

insert into xmlpkg.BLT_DV_REQ_RESP(ID,REQUEST_XML) values (
      xmlpkg.SEQ_DV_REQ_RESP.nextval,'<Condition  Code= "parties. &amp;lt;A 
 href=''h''&amp;gt;h/&amp;lt;/A&amp;gt;"></Condition>' )

从变量中获取 - 失败 下面的代码在我的转换中

 %dw 2.0
 output text/plain
 ---
 "'"++( '<Condition  Code= "parties. &amp;lt;A 
 href=\'\'h\'\'&amp;gt;h/preventfraud/&amp;lt;/A&amp;gt;"></Condition>' )  as 
 String ++ "'"

解决方法

RESPONSE_XML 的字符串被错误地转义。您正在尝试将 XML 文档作为字符串表达式放入 DataWeave。然而,引号在 href= 之后不平衡和/或被错误地转义。我不确定原始 XML 文档是什么。如果这是手动的,最好让 DataWeave 自动正确地转义它,例如使用类似 write(xmlPayload,"application/xml") as String 的东西。

示例:

        <ee:transform doc:name="Mock result from a request" doc:id="723fdd83-fcce-4bff-8a24-065609b235b0" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/xml
---
{
    book: {
            name: "Robin Hood"
    }   
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <ee:transform doc:name="Do some transform" doc:id="aaca98c2-1f76-476f-8ab3-030061e46472" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload.book mapObject (title: $) ]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <ee:transform doc:name="Prepare arguments for db operation" doc:id="261e8437-d7b5-4a8e-b781-5790ea5f9f40" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    'RESPONSE_XML' : write(payload,"application/xml"),'SUCCESS_FLAG' : "Y"
}
]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <logger level="INFO" doc:name="Logger" doc:id="a90fca6e-5fd3-4aaa-963c-0f06376e4076" message="output #[payload]"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。