You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BizTalk解析仅表头无数据行CSV报Unexpected end of stream错误

问题根因

报错的核心原因是数据行Row节点的最小出现次数默认是1,属于必选节点。平面文件解析器读完表头行、匹配到表头末尾的CRLF分隔符后,会强制要求至少存在1条数据行,于是开始查找数据行的第一个字段分隔符逗号,此时直接碰到流末尾,就抛出了找不到逗号的意外流结束错误。
你之前调整的allow_early_termination、suppress_empty_nodes仅作用于字段级的分隔匹配和空节点处理,无法控制记录节点的可选/必选属性,所以修改后没有效果。

修复方法

只需要调整Row节点的最小出现次数配置即可,两种操作方式选一种:

  • 可视化编辑器操作:在Visual Studio中打开该平面文件架构,选中Row记录节点,在属性面板将Min Occurs属性值从默认的1改为0,保存架构后重新部署到BizTalk即可。
  • 直接修改XSD代码:找到Row节点的定义行,添加minOccurs="0"属性,修改后的节点定义如下:
<xs:element minOccurs="0" maxOccurs="unbounded" name="Row">
  <xs:annotation>
    <xs:appinfo>
      <b:recordInfo structure="delimited" child_delimiter_type="char" child_delimiter="," child_order="infix" sequence_number="2" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" />
    </xs:appinfo>
  </xs:annotation>
  <!-- 剩余原有Row节点内部配置保持不变 -->
</xs:element>
验证说明

修改后所有合法CSV场景都可正常解析,不会影响原有业务逻辑:

  • 仅含表头行(表头末尾带CRLF、无数据行):解析后仅生成Header节点,无Row节点,不再抛错
  • 含1条及以上数据行:解析逻辑和修改前完全一致
  • 末尾无CRLF的不规范CSV文件:你之前开启的allow_early_termination配置会自动兼容,不会触发解析错误

内容的提问来源于stack exchange,提问作者NealWalters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:15:37