Nested 带嵌套记录的位置平面文件

Nested 带嵌套记录的位置平面文件,nested,biztalk,flat-file,Nested,Biztalk,Flat File,请一些善良的灵魂给我建议或帮我解决这个平面文件?我不知道如何实现我想要的 如下所示,有几个字段可用作标记标识符 我们的起始标签为“S”,客户信息为“I”,发票详细信息为“F”,备注部分为“N”,最后是结束部分为“E”。正如您所看到的,也有重复记录,这种嵌套和位置记录的混合使用给我带来了麻烦。 因此,每个F-section(客户)都有自己的一套带注释的重复发票 我确实尝试过这个奇妙的技巧,但不幸的是在这个问题上没有嵌套存在 奇怪的是,如果我不考虑位置记录,我可以设法得到我想要的东西。如果我只是把整

请一些善良的灵魂给我建议或帮我解决这个平面文件?我不知道如何实现我想要的

如下所示,有几个字段可用作标记标识符

我们的起始标签为“S”,客户信息为“I”,发票详细信息为“F”,备注部分为“N”,最后是结束部分为“E”。正如您所看到的,也有重复记录,这种嵌套和位置记录的混合使用给我带来了麻烦。 因此,每个F-section(客户)都有自己的一套带注释的重复发票

我确实尝试过这个奇妙的技巧,但不幸的是在这个问题上没有嵌套存在

奇怪的是,如果我不考虑位置记录,我可以设法得到我想要的东西。如果我只是把整个数据放在一个字段中(即,整个F没有定位),我可以得到正确的结构,其中包括重复。但它们是位置的,I,F和N,我所有的努力总是在一个错误中让步,要么说它在寻找标签标识符字母,要么说它在寻找回车符和行尾。任何帮助都将不胜感激,因为我已经为此奋斗了很长一段时间了

示例文件:

S                                                                                                                                                                                                       
I02710242Company name 01               Postboks 123 Sum                                            010223 14 15 50 54                            9597598396200468                             NO                                                                                                                                                                                      N                                                          
F141220178065428         00000102700-13012018000000080654288                                                                                                                  
NINK       !!!!!!!!!!!                                                                                                                                                                                                               
F141220178065429         00000197200-13012018000000080654296                                                                                                                  
NINK       !!!!!!!!!!!                                                                                                                                                                                                               
I02710242Company name 02               Postboks 234 Seum                                           010223 14 16 50 54                            9597598396200468                             NO                                                                                                                                                                                      N                                                          
F050120185794526         00003686250+04022018000000057945263                                                                                                                  
NINK       !!!!!!!!!!!                                                                                                                                                                                                               
F141220178065428         00000102700-13012018000000080654288                                                                                                                  
NINK       !!!!!!!!!!!                                                                                                                                                                                                               
F141220178065429         00000197200-13012018000000080654296                                                                                                                  
NINK       !!!!!!!!!!!                                                                                                                                                                                                               
E000000420000005000030679668+
因此,我认为我想要实现的(除非你们中的任何人有更好的设置)是一个如下所示的模式:

S
---I
     -F
     -N
     -F
     -N

  -I 
     -F
     -N
     -F
     -N
E

诀窍是,在向导的一个步骤中,选择整个重复组(I…N)并设置一个重复元素的重复组

然后,向导将深入到I…N中,并让您定义子记录,这些子记录也可以是重复的组或带有字段的记录


多次运行向导以获得正确的结构没有什么错。我们都做过很多次。

我为您准备了一个示例,这将通过您的示例消息进行验证。我在没有向导的情况下做了这个。虽然向导是了解一些事情的一个很好的起点,但是复杂的嵌套应该通过手工来尝试

需要注意的几件事:

  • 您的子订单是每个重复
    记录的中缀
  • 对于非重复顺序,您没有子顺序,而是将它们指定为
    位置
  • 如果分隔符重复,则它是换行符。这意味着在每个重复的
    记录上
    都指定了分隔符,或者在
    级别指定了默认分隔符
我认为你的问题部分在于识别模式,正如你在我的样本中看到的,模式是不同的;在
I
行之后,有一个
F
N
行的重复模式,我将其封装在名为
Repeatingchild
的记录中

你仍然可以让你的模式工作

  • 通过删除
    Repeatingchild
    记录并将所有元素放置在
    Repeating
    记录中,编辑下面的示例
  • 级别将
    解析器优化
    设置为
    复杂性
    ,如果不这样做,它将在
    I
    记录中遇到问题
仍然缺少的是每个字段的精确位置映射,但我已经用我放入的
Irecord\u part1
Irecord\u part2
证明了位置性。接下来我要做的是,仍然对每一行单独使用向导来生成所有行元素。因此,拆分每一行并对每一行类型运行向导

为了使它更加美观,您可以使单个模式表示。所以我猜
S
记录将是标题,
E
记录将是预告片

 <?xml version="1.0" encoding="utf-16"?>
    <xs:schema xmlns="StackOverflow.FlatFileSchema1" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="StackOverflow.FlatFileSchema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:annotation>
        <xs:appinfo>
          <b:schemaInfo standard="Flat File" root_reference="Root" default_pad_char=" " pad_char_type="char" count_positions_by_byte="false" parser_optimization="speed" lookahead_depth="3" suppress_empty_nodes="false" generate_empty_nodes="true" allow_early_termination="true" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" />
          <schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" />
        </xs:appinfo>
      </xs:annotation>
      <xs:element name="Root">
        <xs:annotation>
          <xs:appinfo>
            <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" sequence_number="1" child_delimiter_type="hex" child_order="infix" child_delimiter="0x0A" />
          </xs:appinfo>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:annotation>
              <xs:appinfo>
                <b:groupInfo sequence_number="0" />
              </xs:appinfo>
            </xs:annotation>
            <xs:element minOccurs="1" maxOccurs="1" name="SRecord">
              <xs:annotation>
                <xs:appinfo>
                  <b:recordInfo structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" sequence_number="1" tag_name="S" />
                </xs:appinfo>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:annotation>
                    <xs:appinfo>
                      <b:groupInfo sequence_number="0" />
                    </xs:appinfo>
                  </xs:annotation>
                  <xs:element name="Srecord" type="xs:string">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:fieldInfo justification="left" sequence_number="1" pos_length="200" />
                      </xs:appinfo>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="Repeating">
              <xs:annotation>
                <xs:appinfo>
                  <b:recordInfo sequence_number="2" structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" child_delimiter_type="hex" child_delimiter="0x0A" child_order="infix" repeating_delimiter_type="hex" repeating_delimiter="0x0A" />
                </xs:appinfo>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:annotation>
                    <xs:appinfo>
                      <b:groupInfo sequence_number="0" />
                    </xs:appinfo>
                  </xs:annotation>
                  <xs:element minOccurs="0" maxOccurs="unbounded" name="IRecord">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:recordInfo structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" sequence_number="1" tag_name="I" />
                      </xs:appinfo>
                    </xs:annotation>
                    <xs:complexType>
                      <xs:sequence>
                        <xs:annotation>
                          <xs:appinfo>
                            <b:groupInfo sequence_number="0" />
                          </xs:appinfo>
                        </xs:annotation>
                        <xs:element name="Irecord_part1" type="xs:string">
                          <xs:annotation>
                            <xs:appinfo>
                              <b:fieldInfo justification="left" sequence_number="1" pos_length="133" />
                            </xs:appinfo>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="Irecord_part2" type="xs:string">
                          <xs:annotation>
                            <xs:appinfo>
                              <b:fieldInfo sequence_number="2" justification="left" pos_length="200" />
                            </xs:appinfo>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element minOccurs="0" maxOccurs="unbounded" name="Repeatingchild">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:recordInfo sequence_number="2" structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" child_delimiter_type="hex" child_delimiter="0x0A" child_order="infix" />
                      </xs:appinfo>
                    </xs:annotation>
                    <xs:complexType>
                      <xs:sequence>
                        <xs:annotation>
                          <xs:appinfo>
                            <b:groupInfo sequence_number="0" />
                          </xs:appinfo>
                        </xs:annotation>
                        <xs:element minOccurs="0" maxOccurs="unbounded" name="FRecord">
                          <xs:annotation>
                            <xs:appinfo>
                              <b:recordInfo structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" sequence_number="1" tag_name="F" />
                            </xs:appinfo>
                          </xs:annotation>
                          <xs:complexType>
                            <xs:sequence>
                              <xs:annotation>
                                <xs:appinfo>
                                  <b:groupInfo sequence_number="0" />
                                </xs:appinfo>
                              </xs:annotation>
                              <xs:element name="Frecord" type="xs:string">
                                <xs:annotation>
                                  <xs:appinfo>
                                    <b:fieldInfo justification="left" sequence_number="1" pos_length="174" />
                                  </xs:appinfo>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                        <xs:element minOccurs="0" maxOccurs="unbounded" name="NRecord">
                          <xs:annotation>
                            <xs:appinfo>
                              <b:recordInfo sequence_number="2" structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="N" />
                            </xs:appinfo>
                          </xs:annotation>
                          <xs:complexType>
                            <xs:sequence>
                              <xs:annotation>
                                <xs:appinfo>
                                  <b:groupInfo sequence_number="0" />
                                </xs:appinfo>
                              </xs:annotation>
                              <xs:element name="Nrecord" type="xs:string">
                                <xs:annotation>
                                  <xs:appinfo>
                                    <b:fieldInfo justification="left" sequence_number="1" pos_length="229" />
                                  </xs:appinfo>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="ERecord">
              <xs:annotation>
                <xs:appinfo>
                  <b:recordInfo structure="positional" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="E" sequence_number="3" />
                </xs:appinfo>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:annotation>
                    <xs:appinfo>
                      <b:groupInfo sequence_number="0" />
                    </xs:appinfo>
                  </xs:annotation>
                  <xs:element name="Erecord" type="xs:string">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:fieldInfo justification="left" sequence_number="1" pos_length="29" />
                      </xs:appinfo>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>