使用ESB的business service调用OBAM的DataObjectOperationsByName web 服务,试图往Employees数据对象插入一条记录,
测试输入如下:
<bam:Insert xmlns:bam="http://xmlns.oracle.com/bam">
<!--Optional:-->
<bam:xmlPayload>
<DataObject Name="Employees" Path="/Samples">
<Contents>
<Row>
<Column Name="Salesperson" Value="Greg Jinyn" />
<Column Name="Sales Area" Value="northeast" />
<column Name="Sales Number" Value="5671" />
</Row>
</Contents>
</DataObject>
</bam:xmlPayload>
</bam:Insert>
结果遇到错误:
BAM-06147: DataObjectOperations Web 服务的 XML 有效负载无效; nested exception is:
java.rmi.remoteexception: BAM-06147: DataObjectOperations Web 服务的 XML 有效负载无效; nested exception is:
java.lang.RuntimeException: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unkNown-source}]: [2,0]
仔细研究后发现,<bam:xmlPayload>String</bam:xmlPayload>,传入的内容为字符串,而上面的demo会让xml解析器认为是新的xml元素非string,因此可通过encode解决该问题。
解决方法有两种,一、xml通常认为“<”是新的xml元素的开始,对于少量的可以简单的将“<”替换成"<"即可;
二:当<bam:xmlPayload>间需要包含大量的xml内容时,可使用<![CDATA[ ]]>的方式将内容包含进来,xml解析时遇到CDATA即跳过不解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。