Oracle 插入 XML 参数未在 Mule 中验证
Oracle insert XML parameter is not validating in Mule
我在 Oracle XMLTYPE 列中有一个插入语句。当我 运行 在 Oracle 中使用它时,它工作正常。但是,如果我将相同的内容放在 Mule 中,则插入它不会验证。
我的XML是
'<DRIVEResponse><Loan><Condition ActionStep="parties. &lt;A href=''ABC.com/abc/''"/>
</Loan>
</DRIVEResponse>'
这是我放入数据库插入的内容
{
'RESPONSE_XML' : '<DRIVEResponse><Loan><Condition ActionStep="parties.
&lt;A href=''ABC.com/abc/''"/> </Loan></DRIVEResponse>' ,
'SUCCESS_FLAG' : "Y"
}
我收到的错误是
- Invalid input ''', expected `}` or ',' for the object expression.
(第 2 行,第 88 列):
查询文本来自 java class 。同样的查询文本正在发送到一个 spring 引导服务,并且插入正在那里进行。但是在 mule 中,我收到如图所示的错误。如果我 运行 此查询在 SQL 开发人员中 运行 正在插入记录。
更新:- 使用硬编码 XML 插入语句,工作正常。
但是如果我把它放在一个转换中并将该变量带入查询,它就会失败。即使我与硬编码值完全匹配,如果我将它放在变量中,它也会失败。
硬编码 - 工作正常
insert into xmlpkg.BLT_DV_REQ_RESP(ID, REQUEST_XML) values (
xmlpkg.SEQ_DV_REQ_RESP.nextval,
'<Condition Code= "parties. &lt;A
href=''h''&gt;h/&lt;/A&gt;"></Condition>' )
取自变量 - 失败
下面的代码在我的转换中
%dw 2.0
output text/plain
---
"'"++( '<Condition Code= "parties. &lt;A
href=\'\'h\'\'&gt;h/preventfraud/&lt;/A&gt;"></Condition>' ) as
String ++ "'"
RESPONSE_XML 的字符串被错误转义。您正在尝试将 XML 文档作为字符串表达式放入 DataWeave 中。然而引号是不平衡的 and/or 在 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]"/>
我在 Oracle XMLTYPE 列中有一个插入语句。当我 运行 在 Oracle 中使用它时,它工作正常。但是,如果我将相同的内容放在 Mule 中,则插入它不会验证。
我的XML是
'<DRIVEResponse><Loan><Condition ActionStep="parties. &lt;A href=''ABC.com/abc/''"/>
</Loan>
</DRIVEResponse>'
这是我放入数据库插入的内容
{
'RESPONSE_XML' : '<DRIVEResponse><Loan><Condition ActionStep="parties.
&lt;A href=''ABC.com/abc/''"/> </Loan></DRIVEResponse>' ,
'SUCCESS_FLAG' : "Y"
}
我收到的错误是
- Invalid input ''', expected `}` or ',' for the object expression.
(第 2 行,第 88 列):
查询文本来自 java class 。同样的查询文本正在发送到一个 spring 引导服务,并且插入正在那里进行。但是在 mule 中,我收到如图所示的错误。如果我 运行 此查询在 SQL 开发人员中 运行 正在插入记录。
更新:- 使用硬编码 XML 插入语句,工作正常。 但是如果我把它放在一个转换中并将该变量带入查询,它就会失败。即使我与硬编码值完全匹配,如果我将它放在变量中,它也会失败。
硬编码 - 工作正常
insert into xmlpkg.BLT_DV_REQ_RESP(ID, REQUEST_XML) values (
xmlpkg.SEQ_DV_REQ_RESP.nextval,
'<Condition Code= "parties. &lt;A
href=''h''&gt;h/&lt;/A&gt;"></Condition>' )
取自变量 - 失败 下面的代码在我的转换中
%dw 2.0
output text/plain
---
"'"++( '<Condition Code= "parties. &lt;A
href=\'\'h\'\'&gt;h/preventfraud/&lt;/A&gt;"></Condition>' ) as
String ++ "'"
RESPONSE_XML 的字符串被错误转义。您正在尝试将 XML 文档作为字符串表达式放入 DataWeave 中。然而引号是不平衡的 and/or 在 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]"/>