使用Xml“;原样;使用BizTalk Sql适配器

使用Xml“;原样;使用BizTalk Sql适配器,biztalk,Biztalk,我有一个存储过程,它以xml数据类型返回完整格式的模式实例: <ns0:PolicyCreated xmlns:ns0="http://blah/v1.0"> <ns0:Source> <ns0:Organisation>Company1</ns0:Organisation> <ns0:System>System1</ns0:System> </ns0:Source> </ns0:P

我有一个存储过程,它以xml数据类型返回完整格式的模式实例:

<ns0:PolicyCreated xmlns:ns0="http://blah/v1.0">
  <ns0:Source>
    <ns0:Organisation>Company1</ns0:Organisation>
    <ns0:System>System1</ns0:System>
  </ns0:Source>
</ns0:PolicyCreated>

公司1
系统1
问题是,当我尝试使用Sql适配器时,它会将xml包装在根节点和命名空间中:

<ns0:PolicyCreated xmlns:ns0="http://blah/v1.0">
  <ns0:PolicyCreated xmlns:ns0="http://blah/v1.0">
    <ns0:Source>
      <ns0:Organisation>Company1</ns0:Organisation>
      <ns0:System>System1</ns0:System>
    </ns0:Source>
  </ns0:PolicyCreated>
</ns0:PolicyCreated>

公司1
系统1
所以我得到了一个双根节点和名称空间

你知道我该怎么做吗

谢谢你


Tom

更新:似乎有一种方法可以通过WCF SQL适配器实现这一点,因为您可以在发送端口WCF配置中的响应消息上指定主体xpath

然而,这只是浪费,因为您所做的只是告诉适配器“展开”xml,然后应用另一个相同的包装器


对于SQL适配器,没有这样的选项。所以我没有办法去做我想做的事,但这不是世界末日。我只需要在sql适配器配置中指定一个不同的包装器,并维护另一个架构。

更新:似乎有一种方法可以使用WCF sql适配器实现这一点,因为您可以在发送端口WCF配置中的响应消息上指定主体xpath

然而,这只是浪费,因为您所做的只是告诉适配器“展开”xml,然后应用另一个相同的包装器


对于SQL适配器,没有这样的选项。所以我没有办法去做我想做的事,但这不是世界末日。我只需要在sql适配器配置中指定一个不同的包装器,并维护另一个架构。

您可以共享请求和响应架构吗?这是BizTalk 2006 SQL适配器还是WCF SQL适配器?没有请求/响应架构。我没有使用适配器元数据。这是单向接收。我只想按原样从SQL适配器接收xml,就像使用MSMQ或文件适配器一样。似乎有一种方法可以通过WCF SQL适配器实现这一点,因为您可以在发送端口响应中指定主体xpath。但是,对于SQLSQL,您是否尝试为从W SQL适配器返回的XML创建信封模式?。对子文档使用“anyType/maxOccurs=unbounded”。虽然您可能没有真正执行Envelope处理,但是double root元素已经不存在了,因为它被认为是一个Envelope元素,而不是文档元素。您应该以单独的行“按原样”进入MessageBox(对于XML AUTO)结束,感谢Marvin。我没有机会尝试这个。你能分享请求和响应模式吗?这是BizTalk 2006 SQL适配器还是WCF SQL适配器?没有请求/响应架构。我没有使用适配器元数据。这是单向接收。我只想按原样从SQL适配器接收xml,就像使用MSMQ或文件适配器一样。似乎有一种方法可以通过WCF SQL适配器实现这一点,因为您可以在发送端口响应中指定主体xpath。但是,对于SQLSQL,您是否尝试为从W SQL适配器返回的XML创建信封模式?。对子文档使用“anyType/maxOccurs=unbounded”。虽然您可能没有真正执行Envelope处理,但是double root元素已经不存在了,因为它被认为是一个Envelope元素,而不是文档元素。您应该以单独的行“按原样”进入MessageBox(对于XML AUTO)结束,感谢Marvin。我没有机会尝试这个。