Thursday, February 19, 2009

Describe a problem that occurs when you parse a complex flat file in BizTalk Server 2004 with the parser_optimization property set to the default valu

Special Thanks to...!597AD44E67439214!212.entry
which in turn takes to this site.

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

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

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.

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:

complexity" lookahead_depth="0"/>


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:
Collapse this tableExpand this table

Default value
true or false
Indicates whether to remove empty XML nodes after the parser generates XML instance data.
true or false
Generates empty nodes for records that exist in the XML instance data.
speed or complexity
Optimizing 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.
Any positive integer. A value of 0 (zero) indicates infinite lookahead.
Indicates how far to look ahead for matching data.
true or false
Indicates 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.