Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您可以使用oracle dataadapter从数据库中选择XML吗_Xml_Oracle_Biztalk - Fatal编程技术网

您可以使用oracle dataadapter从数据库中选择XML吗

您可以使用oracle dataadapter从数据库中选择XML吗,xml,oracle,biztalk,Xml,Oracle,Biztalk,使用xmlagg查询选择xmlagg xmlelement。。。从数据库中选择XML将允许对我们获取的数据的格式进行更多的控制 基于查询的模式生成为我们提供了标准的polingstations,其中包含xml的单个记录。为该xml创建模式也很容易,只要遵循 但是,将此模式添加到元素的datastructure类型不起作用。我可以在下拉列表中选择模式,但当选择该模式时,它会重置回以前选择的条目,但任何其他条目都有效。在下图中,order_标题是我想要使用的标题 我试图忽略模式,看看是否可以映射结果

使用xmlagg查询选择xmlagg xmlelement。。。从数据库中选择XML将允许对我们获取的数据的格式进行更多的控制

基于查询的模式生成为我们提供了标准的polingstations,其中包含xml的单个记录。为该xml创建模式也很容易,只要遵循

但是,将此模式添加到元素的datastructure类型不起作用。我可以在下拉列表中选择模式,但当选择该模式时,它会重置回以前选择的条目,但任何其他条目都有效。在下图中,order_标题是我想要使用的标题

我试图忽略模式,看看是否可以映射结果,但pollingstatement中的数据实际上是转义的

订单\标题订单\ id 206817/订单\ id


有没有人将oracle dataadapter与xml查询相结合?知道我哪里出错了吗?存储过程是更好的解决方案吗?我能不能找到一种方法,使数据不改变这里有几个选项:

类型化轮询 如果使用TypedPolling,则必须通过以下两种方式之一提取消息,该消息将作为CDATA嵌入xs:string元素中:

在业务流程消息分配形状中 在接收位置的绑定属性中,如下所示:示例适用于SQL Server,但重点关注BizTalk适配器配置 XmlPolling 如果使用XmlPolling,您可以做一个简单的小技巧:

使用xs:any-child、envelope=true、BodyXPath=node创建一个“虚拟”信封模式,并创建一个记录 将xmlStoredProcedureRootNodeName设置为信封架构的根节点 将xmlStoredProcedureRootNodeNamespace设置为信封架构的命名空间 创建与Oracle查询生成的XML匹配的模式
现在,XMLRecieve管道将使您的查询与您生成的模式分离。这种取消匹配是必要的,因为从理论上讲,一个查询可以在一个结果中生成多个文档,该结果将具有多个根节点,这将是无效的。或者,您可以将查询设计为生成除根节点以外的所有内容,然后使用适配器设置分配根节点,但我自己并不喜欢这种方法,我更喜欢能够快速、轻松地测试查询结果,而无需修改。

解决方案相当简单,但很难找到相关文档

我通过使用适配器服务并将XML查询放入绑定中来创建receiveport。这创建了一个模式,直到包含XML的节点,在我的例子中,这称为XML

如果您只运行它,它将创建一个XML,您在其中创建的XML是XML元素中的一个字符串,所有这些都转义为

要从轮询语句中获取元素,首先需要创建一个模式,通过从格式良好的XML生成一个模式,可以很容易地实现这一点

然后更改receiveport入站BizTalk消息正文,使其源为Path,并从Visual Studio中复制包含XML数据的元素上XML元素属性的实例xpath

将xpath从元素属性复制到receiveport设置。您可以编写Xpath,但我不能重新编写。名称空间有点奇怪

此时,传入的消息是一个遵循结果XML模式的XML,可以作为BizTalk中的任何XML使用,实际上比使用Oracle适配器时得到的标准XML要容易一些,因为您去掉了pollingstmt/pollingrecord/pollingrecord结构


我想提到的是,根节点需要是唯一的,xpath获取的xml需要为它找到一个模式

感谢您的回答,但是对于Oracle适配器,Typedpolling和XMLPolling都不可用。我已经找到了解决这个问题的方法,但是我仍然在努力。啊,很抱歉,我已经习惯了使用sqlBinding。您能够检查生成的XML吗?我提到的其中一种类型化轮询方法可能仍然有效,假设您的XML刚刚嵌入到一个意外的位置,您可以提取它。我成功地完成了,您的提示对我帮助很大。如果没有更好的替代方法,我将在几天内接受这一答案。