【问题标题】:Consume Xml "AS IS" using BizTalk Sql Adapter使用 BizTalk Sql 适配器“按原样”使用 Xml
【发布时间】:2011-05-10 14:38:21
【问题描述】:

我有一个存储过程,它返回一个完整的模式实例作为 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>

问题是当我尝试使用 Sql Adapter 使用它时,它会将 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>

所以我得到了一个双根节点和命名空间。

有什么想法可以解决这个问题吗?

谢谢您

汤姆

【问题讨论】:

  • 你能分享请求和响应模式吗?这是 BizTalk 2006 SQL 适配器还是 WCF SQL 适配器?
  • 嗨,克里斯,没有请求/响应模式。我没有使用适配器元数据。这是一种单向接收。我只想从 SQL 适配器接收 xml,类似于使用 MSMQ 或 FILE 适配器的方式。似乎有一种方法可以使用 WCF SQL 适配器执行此操作,因为您可以在发送端口响应中指定主体 xpath。但是,使用 SQL
  • 您是否尝试为从 SQL 适配器返回的 XML 创建一个信封模式?对子文档使用“anyType/maxOccurs=unbounded”。尽管您可能没有真正进行信封处理,但双根元素已经消失,因为它被认为是信封元素,而不是文档元素。您最终应该将单独的行“按原样”(FOR XML AUTO)进入 MessageBox
  • 感谢马文。我没有机会尝试这个。

标签: biztalk


【解决方案1】:

更新:似乎有一种方法可以使用 WCF SQL 适配器执行此操作,因为您可以在发送端口 WCF 配置中指定响应消息的主体 xpath。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    相关资源
    最近更新 更多