2014-10-17 70 views
1

我有一個自定義以下組件發送管道:Biztalk的自定義管道組件:XmlSchemaException

預組裝:

  • NO組件

組裝

  • XML彙編程序

編碼

  • 自定義組件1
  • XML驗證
  • 自定義組件2

有了這個配置,我總是在 「自定義組件2」 的XmlSchemaException。 「異常消息是」元素不能包含空格。內容模型是空的。」

Execute(IPipelineContext pContext, IBaseMessage pInMsg) 
{ 
    ReadOnlySeekableStream stream = new ReadOnlySeekableStream(pInMsg.BodyPart.GetOriginalDataStream()); 
    XDocument doc; 
    //Exception on next line: 
    using(XmlReader reader = XmlReader.Create(stream)) 
    { 
    reader.MoveToContent(); 
    } 
} 

,因爲當我刪除例如這很奇怪‘自定義組件1’或‘XML驗證器’,它工作正常。我只得到了異常,當我在所有3個組成部分的地方。

任何想法,我可能要檢查,以使其與所有部件工作?

謝謝你和問候 邁克爾

+0

上述步驟的你的輸出消息我以爲你改變自定義組件1的消息?您確定消息的正文流是否正確,並在更改後設置爲正確的長度? – 2014-10-17 13:54:10

+0

在第一個組件中,我改變了消息併爲BodyPart.Data分配了一個新的內存流(並將流的位置設置爲0) – MFox 2014-10-17 14:29:50

+0

您是否嘗試將該流記錄到字符串之前的某個位置?你可以試着看看它是否有任何問題。 – 2014-10-17 14:31:41

回答

0

最有可能您的組件1添加XmlElement的節點有一些無效值如廣告爲複雜類型節點(記錄節點)提供空值(<Order><price></price></Order> adding empty value after <Order> and then <price> comes)。 如果您在消息進入組件1之前使用映射來創建Xml,那麼它可能也會在此處發生。

  • 嘗試在驗證階段移除自定義組件2和XmlValidator,並查看輸出xml是如何進入文件夾並嘗試在記事本++中看到的。
  • 驗證XML模式
+0

嗨,我捕獲組件1後的xml並驗證它對XSD在外部工具中 - 它是有效的。我終於找到了3個負責錯誤的節點。它們都有屬性,但沒有節點值,例如:如何使它適用於此場景?謝謝! – MFox 2014-10-20 11:19:41

+0

是否可以在這裏添加模式和生成的xml。你有沒有試過添加值和這些節點,看看它是否有效? – 2014-10-20 15:13:59