【发布时间】:2009-06-26 20:49:59
【问题描述】:
从 BizTalk 中的平面文件中删除标题行的最简单方法是什么?我通过为标题行创建一个单独的模式(和一个为正文)来实现这一点,然后将“配置管道”对话框中的 HeaderSpecName 属性设置为我刚刚创建的标题模式,然后将 PreserveHeader 属性设置为 false。但是,我的问题是,使用此解决方案我需要创建一个模式,除了它需要存在之外什么都不做,这样我就可以删除标题行。
【问题讨论】:
标签: biztalk
从 BizTalk 中的平面文件中删除标题行的最简单方法是什么?我通过为标题行创建一个单独的模式(和一个为正文)来实现这一点,然后将“配置管道”对话框中的 HeaderSpecName 属性设置为我刚刚创建的标题模式,然后将 PreserveHeader 属性设置为 false。但是,我的问题是,使用此解决方案我需要创建一个模式,除了它需要存在之外什么都不做,这样我就可以删除标题行。
【问题讨论】:
标签: biztalk
我相信你所说的是做你所要求的推荐方法。我只需要在我正在处理的项目上执行此操作并选择拥有额外的架构。
另一种选择是为在平面文件反汇编程序之前执行的反汇编阶段编写自己的custom pipeline component。解码阶段也可以工作,但反汇编阶段似乎是为这种类型的工作而设计的。
第二个选项将使标题行的删除更加通用,并且可以用于许多不同的架构,因此您不必为每个平面文件架构创建单独的标题架构。
【讨论】:
我建议通过平面文件架构向导执行此操作;将您的第一个记录定义为单数记录,然后将其他记录定义为重复记录。然后在您正在使用的任何地图或转换中,您都可以忽略标题记录。您也可以在通过 FF 向导时完全忽略标题记录,但我更喜欢在我的模式中定义所有内容...
查看帮助和微软教程,还有一篇关于代码项目的不错的文章,其中包含识别标头记录。请注意,如果您知道标头记录的绝对位置(例如:“始终是第一行”),则无需弄乱记录标记。
http://www.codeproject.com/Articles/13706/Creating-Flat-File-schemas-using-the-BizTalk-Serve
【讨论】:
您总是可以只解析标题行而不映射它。
【讨论】:
架构存在的原因有很多。一个这样的原因是捕获由一方生成的消息的结构,这实际上意味着协议。因此,即使您可能不使用这些字段,也最好按原样捕获架构。
【讨论】:
我认为 PreserveHeader 的行为不像您所期望的那样。此属性仅确定是否将标头中的值提升到来自反汇编程序的 XML 消息的上下文中。
【讨论】: