Parsing a complex flat file may fail in BizTalk Server 2006 and in BizTalk Server 2004 (884622)



The information in this article applies to:

  • Microsoft BizTalk Server 2006 Standard Edition
  • Microsoft BizTalk Server 2006 Enterprise Edition
  • Microsoft BizTalk Server 2006 Developer Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Standard Edition

SYMPTOMS

When you try to parse a complex flat file in Microsoft BizTalk Server 2006 or in Microsoft BizTalk Server 2004, the parser may fail, and you may receive an error message that is similar to one of the following error messages:

Error message 1
Unexpected Data Found while looking for ElementName
Error message 2
Unable to match the data in the input stream

CAUSE

This problem may occur when the parser_optimization property is set to the default value of "speed" in the schema. Additionally, if you have many optional nodes in the same group or record, the lookahead_depth property may not be set correctly.

RESOLUTION

To resolve this problem, set the parser_optimization property to "complexity" and the lookahead_depth property to "0" (zero) in the schema. The parser_optimization property and the lookahead_depth property are not present in the user interface. You must manually change the properties in the schemaInfo element, as in the following example:
<b:schemaInfo parser_optimization="complexity" lookahead_depth="0"/> 

MORE INFORMATION

BizTalk Server has the following two modes for the algorithm to parse a flat file into XML:
  • "speed"
  • "complexity"
By default, the setting for the parser_optimization property is "speed." This setting is optimized to decrease parsing time. The "speed" setting can handle most flat files but cannot deal with all the ambiguities that the "complexity" setting can. The "complexity" mode is not quick but can handle a wider range of ambiguities.

There are five properties that cannot be changed in the BizTalk Server 2004 user interface. The following table lists the flat file node properties:
PropertyValuesDefault valueDescription
suppress_empty_nodestrue or falsefalseIndicates whether to remove empty XML nodes after the parser generates XML instance data.
generate_empty_nodestrue or falsetrueGenerates empty nodes for records that exist in the XML instance data.
parser_optimizationspeed or complexityspeedOptimizing for speed decreases the parsing time at the cost of dealing with some ambiguities in data. Optimizing for complexity handles a wider range of ambiguities at the cost of processing speed.
lookahead_depthAny positive integer. A value of 0 (zero) indicates infinite lookahead.3Indicates how far to look ahead for matching data.
allow_early_terminationtrue or falsefalseIndicates whether positional records can terminate early (true) or must contain data for all record fields (false).
Note If you set the allow_early_termination property to true, early termination of a positional record is permitted in cases where the right-most or outermost field is less than its defined length.

Modification Type:MajorLast Reviewed:6/16/2006
Keywords:kbbiztalk2004-2006swept kbtshoot kbprb KB884622 kbAudITPRO kbAudDeveloper