【问题标题】:Disassemble a flatfile with BizTalk, when record contains nulls [duplicate]当记录包含空值时,使用 BizTalk 反汇编平面文件 [重复]
【发布时间】:2020-04-04 21:39:45
【问题描述】:

外部合作伙伴将向我们发送包含采购订单的逗号分隔文件,我们需要在 BizTalk 环境中处理这些文件。我将使用 BizTalk 的平面文件反汇编器将 csv 数据转换为可使用的 xml。

但是,我们合作伙伴文件中的许多记录对于某些“列”具有空值(例如,并非所有地址字段都有值)。在 BizTalk 使用平面文件 xsd(使用 Visual Studio 中的向导创建)进行反汇编后,生成的 xml 包含如下元素:

<ShipToAddress2>�</ShipToAddress2>

我们随后的映射失败了

System.Xml.XmlException: '.',十六进制值 0x00,是无效字符。

我可以通过什么方式消除此错误?平面文件 xsd 中是否有一个属性,或者反汇编程序中有一个设置,我可以在其中设置处理数据中的空值的行为?

【问题讨论】:

  • 有点脏,但您可以为相关字段指定填充字符(十六进制类型,值0x00)。这样在反汇编过程中零字符将被剥离。
  • @ϻᴇᴛᴀʟ 确实似乎是一个更具结构性的解决方案。我将不得不在管道组件上投入更多时间,该组件会剥离许多字符(包括0x000x19)。不过,在这一点上,我会接受 Ruud 的短期解决方案,但会考虑您对结构性解决方案的建议。

标签: character-encoding xsd biztalk flat-file


【解决方案1】:

如果相关字段还没有填充字符集,您可以在反汇编过程中使用它来去除零字符。

对于每个需要它的字段,首先将Pad Character Type 设置为Hexadecimal,然后将Pad Character 设置为0x00

【讨论】:

  • 我可以确认此作品如前所述。为了清楚起见;为整个 xsd 设置默认填充字符是不够的;它确实必须在每个单独的字段中设置。
  • @cordifed 如果您在架构上设置默认填充字符,您仍然需要为每个需要它的字段将Pad Character Type 设置为Default Pad Character
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多