2011-05-09 87 views
1

我有一個存儲過程返回一個完全形成的模式實例爲XML數據類型:使用XML「原樣」使用BizTalk SQL適配器

<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適配器消耗這它將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> 

所以我得到一個雙根節點和命名空間。

任何想法如何解決這個問題?

感謝adavnce

湯姆

+1

您可以共享請求和響應模式嗎?這是BizTalk 2006 SQL適配器還是WCF SQL適配器? – 2011-05-09 13:14:04

+0

嗨克里斯沒有請求/響應模式。我沒有使用適配器元數據。這是一種單向接收。我只想從SQL適配器接收xml,這與您使用MSMQ或FILE適配器的方式類似。看起來有一種方法可以使用WCF SQL適配器執行此操作,因爲您可以在發送端口響應中指定正文xpath。但是,使用SQL – 2011-05-10 06:30:42

+1

您是否試圖爲XML返回的SQL適配器創建信封模式?爲子文檔使用'anyType/maxOccurs = unbounded'。儘管你可能不是真的在進行信封處理,但雙根元素已經消失了,因爲它被認爲是一個信封元素,而不是文檔元素。您應該最終將您的單行進入MessageBox'原樣'(FOR XML AUTO) – 2011-05-25 17:01:30

回答

1

更新:似乎有一種方法使用WCF SQL適配器要做到這一點,因爲你可以指定在發送端口WCF configutation響應消息體的XPath。

但是,這只是浪費,因爲你所做的只是告訴適配器「解開」xml,然後應用另一個相同的包裝。

使用SQL適配器不存在這樣的選項。所以沒有辦法做我想做的事情,但這不是世界末日。我只需要在SQL適配器配置中指定一個不同的包裝器,並擁有另一個架構來維護。