平面文件的架构

问题描述

我必须进行从Flatfile到xml的转换,但是问题是Flatfile具有多个子节点,并且子节点也具有子节点。记录在文件中多次出现。我已经创建了一个架构,但是它仅处理单个记录。 您能告诉我我应该创建的可以处理多条记录的架构的结构吗?

这是平面文件

ASN,000589,0000768,HDR,0008289,0040294A,LA,00,1570,21,TM,M,PE,Corporation,120276,052451,05-00289,05-08299,02,B,011,C,BD,8,16570,24,ST,N,GETRO,120246,054551,0000568,8018279,POH,0508289,004024A,1,PPO000199,NP,13615,13563,13414,1351,2584,3598,2900,A200,B200,HN,18552,1270,1206,05451,LNE,0005289,00402929,PPO000099,AP,8719,00704,2536,DW,3870,CC,0930-01,05-08289,13246,05751,00005668,2,PCK,A0722,4786149,100,0005089,PPO0000199,OP,82664,001822,890,HW,3500,0656-01,000052768,4,031992,48005,12,8290,004029A,872087,0000859,5744,367500,CD,098656-02,00005768,3,04022,479782,2872,04023,4797288,ASN,000521288,004679294A,000075667,000788288,004024594A,33758,01,PP,BA,33158,000672767,8056279,000508288,004029294A,PPO000000199,1360415,1350063,1346914,13501,258304,35698,D250,D290,HQ,10352,000052767,0005288,874402,30001281,HA,377500,098630-02,00002767,03134,480075,03114,480076,94985,480579,94995,480080,

这是我创建的架构

<?xml version="1.0" encoding="UTF-16"?>

-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://Test.InputSchema" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://Test.InputSchema">


-<xs:annotation>


-<xs:appinfo>

<schemaEditorExtension:schemaInfo xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" standardName="Flat File" extensionClass="Microsoft.Azure.Integration.DesignTools.FlatFileExtension.FlatFileExtension" namespaceAlias="b"/>

<b:schemaInfo root_reference="Root" default_child_order="infix" default_child_delimiter="," child_delimiter_type="char" compile_parse_tables="false" allow_message_breakup_of_infix_root="false" early_terminate_optional_fields="false" allow_early_termination="false" generate_empty_nodes="true" suppress_empty_nodes="false" lookahead_depth="3" parser_optimization="speed" count_positions_by_byte="false" pad_char_type="char" default_pad_char=" " codepage="65001" standard="Flat File"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Root">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="hex" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="1" child_order="postfix" child_delimiter="0x0D 0x0A" structure="delimited"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:sequence maxOccurs="unbounded">


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="1"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="ASN">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="default" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="1" child_order="default" structure="delimited" tag_name="ASN,"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Field" maxOccurs="unbounded" type="xs:string">


-<xs:annotation>


-<xs:appinfo>

<b:fieldInfo sequence_number="1" justification="left"/>

</xs:appinfo>

</xs:annotation>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>


-<xs:element name="HDR">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="default" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="2" child_order="default" structure="delimited" tag_name="HDR,"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Field" maxOccurs="unbounded" type="xs:string">


-<xs:annotation>


-<xs:appinfo>

<b:fieldInfo sequence_number="1" justification="left"/>

</xs:appinfo>

</xs:annotation>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>


-<xs:element name="POH">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="default" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="3" child_order="default" structure="delimited" tag_name="POH,"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Field" maxOccurs="unbounded" type="xs:string">


-<xs:annotation>


-<xs:appinfo>

<b:fieldInfo sequence_number="1" justification="left"/>

</xs:appinfo>

</xs:annotation>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>


-<xs:sequence maxOccurs="unbounded">


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="4"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="LNE" maxOccurs="unbounded">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="default" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="1" child_order="default" structure="delimited" tag_name="LNE,"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Field" maxOccurs="unbounded" type="xs:string">


-<xs:annotation>


-<xs:appinfo>

<b:fieldInfo sequence_number="1" justification="left"/>

</xs:appinfo>

</xs:annotation>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>


-<xs:element name="PCK">


-<xs:annotation>


-<xs:appinfo>

<b:recordInfo child_delimiter_type="default" suppress_trailing_delimiters="false" preserve_delimiter_for_empty_data="true" sequence_number="2" child_order="default" structure="delimited" tag_name="PCK,"/>

</xs:appinfo>

</xs:annotation>


-<xs:complexType>


-<xs:sequence>


-<xs:annotation>


-<xs:appinfo>

<b:groupInfo sequence_number="0"/>

</xs:appinfo>

</xs:annotation>


-<xs:element name="Field" maxOccurs="unbounded" type="xs:string">


-<xs:annotation>


-<xs:appinfo>

<b:fieldInfo sequence_number="1" justification="left"/>

</xs:appinfo>

</xs:annotation>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:sequence>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

解决方法

这里是使用标记标识符和序列组正确解析记录的架构。我尚未定义所有字段,只是在每条记录下放置一个重复字段,您可以将其替换为适当的字段。

enter image description here

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.SO64697726" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Scratch.SO64697726" 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="complexity" lookahead_depth="3" suppress_empty_nodes="false" generate_empty_nodes="true" allow_early_termination="false" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" child_delimiter_type="char" default_child_delimiter="," default_child_order="infix" />
      <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_order="postfix" child_delimiter_type="hex" child_delimiter="0x0D 0x0A" />
      </xs:appinfo>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:annotation>
          <xs:appinfo>
            <b:groupInfo sequence_number="0" />
          </xs:appinfo>
        </xs:annotation>
        <xs:sequence maxOccurs="unbounded">
          <xs:annotation>
            <xs:appinfo>
              <b:groupInfo sequence_number="1" />
            </xs:appinfo>
          </xs:annotation>
          <xs:element maxOccurs="unbounded" name="ASN">
            <xs:annotation>
              <xs:appinfo>
                <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="ASN," child_delimiter_type="default" child_order="default" sequence_number="1" />
              </xs:appinfo>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:annotation>
                  <xs:appinfo>
                    <b:groupInfo sequence_number="0" />
                  </xs:appinfo>
                </xs:annotation>
                <xs:element maxOccurs="unbounded" name="Field" type="xs:string">
                  <xs:annotation>
                    <xs:appinfo>
                      <b:fieldInfo sequence_number="1" justification="left" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="HDR">
            <xs:annotation>
              <xs:appinfo>
                <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="char" child_delimiter_type="default" child_order="default" tag_name="HDR," sequence_number="2" />
              </xs:appinfo>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:annotation>
                  <xs:appinfo>
                    <b:groupInfo sequence_number="0" />
                  </xs:appinfo>
                </xs:annotation>
                <xs:element maxOccurs="unbounded" name="Field" type="xs:string">
                  <xs:annotation>
                    <xs:appinfo>
                      <b:fieldInfo sequence_number="1" justification="left" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="POH">
            <xs:annotation>
              <xs:appinfo>
                <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="char" child_delimiter_type="default" child_order="default" tag_name="POH," 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 maxOccurs="unbounded" name="Field" type="xs:string">
                  <xs:annotation>
                    <xs:appinfo>
                      <b:fieldInfo sequence_number="1" justification="left" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:sequence maxOccurs="unbounded">
            <xs:annotation>
              <xs:appinfo>
                <b:groupInfo sequence_number="4" />
              </xs:appinfo>
            </xs:annotation>
            <xs:element maxOccurs="unbounded" name="LNE">
              <xs:annotation>
                <xs:appinfo>
                  <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="char" child_delimiter_type="default" child_order="default" tag_name="LNE," sequence_number="1" />
                </xs:appinfo>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:annotation>
                    <xs:appinfo>
                      <b:groupInfo sequence_number="0" />
                    </xs:appinfo>
                  </xs:annotation>
                  <xs:element maxOccurs="unbounded" name="Field" type="xs:string">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:fieldInfo sequence_number="1" justification="left" />
                      </xs:appinfo>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element maxOccurs="unbounded" name="PCK">
              <xs:annotation>
                <xs:appinfo>
                  <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="char" child_delimiter_type="default" child_order="default" tag_name="PCK," sequence_number="2" />
                </xs:appinfo>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence>
                  <xs:annotation>
                    <xs:appinfo>
                      <b:groupInfo sequence_number="0" />
                    </xs:appinfo>
                  </xs:annotation>
                  <xs:element maxOccurs="unbounded" name="Field" type="xs:string">
                    <xs:annotation>
                      <xs:appinfo>
                        <b:fieldInfo sequence_number="1" justification="left" />
                      </xs:appinfo>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

输出

<Root xmlns="http://Scratch.SO64697726">
    <ASN xmlns="">
        <Field>000589</Field>
        <Field/>
        <Field>0000768</Field>
        <Field/>
    </ASN>
    <HDR xmlns="">
        <Field>0008289</Field>
        <Field>0040294A</Field>
        <Field>LA</Field>
        <Field>00</Field>
        <Field>1570</Field>
        <Field>21</Field>
        <Field>TM</Field>
        <Field/>
        <Field/>
        <Field>M</Field>
        <Field>PE</Field>
        <Field>Corporation</Field>
        <Field>120276</Field>
        <Field>052451</Field>
        <Field>05-00289</Field>
        <Field>05-08299</Field>
        <Field>02</Field>
        <Field>LA</Field>
        <Field>B</Field>
        <Field>011</Field>
        <Field>C</Field>
        <Field>BD</Field>
        <Field>8</Field>
        <Field>LA</Field>
        <Field>16570</Field>
        <Field>24</Field>
        <Field>ST</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>0000568</Field>
        <Field>8018279</Field>
        <Field/>
    </HDR>
    <POH xmlns="">
        <Field>0508289</Field>
        <Field>004024A</Field>
        <Field>1</Field>
        <Field>PPO000199</Field>
        <Field>LA</Field>
        <Field>NP</Field>
        <Field>00</Field>
        <Field>13615</Field>
        <Field>13563</Field>
        <Field>13414</Field>
        <Field>1351</Field>
        <Field>2584</Field>
        <Field/>
        <Field>3598</Field>
        <Field>2900</Field>
        <Field/>
        <Field/>
        <Field>A200</Field>
        <Field>B200</Field>
        <Field>HN</Field>
        <Field>18552</Field>
        <Field>1270</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>1206</Field>
        <Field>05451</Field>
        <Field>LA</Field>
        <Field>0000768</Field>
        <Field/>
    </POH>
    <LNE xmlns="">
        <Field>0005289</Field>
        <Field>00402929</Field>
        <Field>1</Field>
        <Field>1</Field>
        <Field>PPO000099</Field>
        <Field>AP</Field>
        <Field>00</Field>
        <Field>8719</Field>
        <Field>00704</Field>
        <Field>2536</Field>
        <Field>DW</Field>
        <Field>3870</Field>
        <Field>DW</Field>
        <Field>CC</Field>
        <Field>0930-01</Field>
        <Field>05-08289</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>13246</Field>
        <Field>05751</Field>
        <Field>LA</Field>
        <Field>00005668</Field>
        <Field>2</Field>
        <Field/>
    </LNE>
    <PCK xmlns="">
        <Field>A0722</Field>
        <Field>4786149</Field>
        <Field>100</Field>
        <Field>2536</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <LNE xmlns="">
        <Field>0005089</Field>
        <Field>0040294A</Field>
        <Field>2</Field>
        <Field>1</Field>
        <Field>PPO0000199</Field>
        <Field>OP</Field>
        <Field>00</Field>
        <Field>82664</Field>
        <Field>001822</Field>
        <Field>890</Field>
        <Field>HW</Field>
        <Field>3500</Field>
        <Field>HW</Field>
        <Field>CC</Field>
        <Field>0656-01</Field>
        <Field>05-08289</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>000052768</Field>
        <Field>4</Field>
        <Field/>
    </LNE>
    <PCK xmlns="">
        <Field>031992</Field>
        <Field>48005</Field>
        <Field>12</Field>
        <Field>8290</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <LNE xmlns="">
        <Field>0005289</Field>
        <Field>004029A</Field>
        <Field>2</Field>
        <Field>2</Field>
        <Field>PPO0000199</Field>
        <Field>AP</Field>
        <Field>00</Field>
        <Field>872087</Field>
        <Field>0000859</Field>
        <Field>5744</Field>
        <Field>HN</Field>
        <Field>367500</Field>
        <Field>HW</Field>
        <Field>CD</Field>
        <Field>098656-02</Field>
        <Field>05-08289</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>00005768</Field>
        <Field>3</Field>
        <Field/>
    </LNE>
    <PCK xmlns="">
        <Field>04022</Field>
        <Field>479782</Field>
        <Field>100</Field>
        <Field>2872</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <PCK xmlns="">
        <Field>04023</Field>
        <Field>4797288</Field>
        <Field>100</Field>
        <Field>2872</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <ASN xmlns="">
        <Field>000521288</Field>
        <Field>004679294A</Field>
        <Field>000075667</Field>
        <Field/>
    </ASN>
    <HDR xmlns="">
        <Field>000788288</Field>
        <Field>004024594A</Field>
        <Field>LA</Field>
        <Field>00</Field>
        <Field>33758</Field>
        <Field>01</Field>
        <Field>TM</Field>
        <Field/>
        <Field/>
        <Field>M</Field>
        <Field>PP</Field>
        <Field>Corporation</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>05-08289</Field>
        <Field>05-08289</Field>
        <Field>01</Field>
        <Field>LA</Field>
        <Field>B</Field>
        <Field>011</Field>
        <Field>C</Field>
        <Field>BA</Field>
        <Field>8</Field>
        <Field>LA</Field>
        <Field>33158</Field>
        <Field>24</Field>
        <Field>ST</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>000672767</Field>
        <Field>8056279</Field>
        <Field/>
    </HDR>
    <POH xmlns="">
        <Field>000508288</Field>
        <Field>004029294A</Field>
        <Field>1</Field>
        <Field>PPO000000199</Field>
        <Field>LA</Field>
        <Field>AP</Field>
        <Field>00</Field>
        <Field>1360415</Field>
        <Field>1350063</Field>
        <Field>1346914</Field>
        <Field>13501</Field>
        <Field>258304</Field>
        <Field/>
        <Field>35698</Field>
        <Field>2900</Field>
        <Field/>
        <Field/>
        <Field>D250</Field>
        <Field>D290</Field>
        <Field>HQ</Field>
        <Field>10352</Field>
        <Field>33158</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>000052767</Field>
        <Field/>
    </POH>
    <LNE xmlns="">
        <Field>0005288</Field>
        <Field>0040294A</Field>
        <Field>1</Field>
        <Field>2</Field>
        <Field>PPO0000199</Field>
        <Field>OP</Field>
        <Field>00</Field>
        <Field>874402</Field>
        <Field>30001281</Field>
        <Field>33158</Field>
        <Field>HA</Field>
        <Field>377500</Field>
        <Field>HA</Field>
        <Field>CC</Field>
        <Field>098630-02</Field>
        <Field>05-08289</Field>
        <Field/>
        <Field>N</Field>
        <Field>GETRO</Field>
        <Field>GETRO</Field>
        <Field>120246</Field>
        <Field>054551</Field>
        <Field>LA</Field>
        <Field>00002767</Field>
        <Field>1</Field>
        <Field/>
    </LNE>
    <PCK xmlns="">
        <Field>03134</Field>
        <Field>480075</Field>
        <Field>12</Field>
        <Field>8290</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <PCK xmlns="">
        <Field>03114</Field>
        <Field>480076</Field>
        <Field>12</Field>
        <Field>8290</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <PCK xmlns="">
        <Field>94985</Field>
        <Field>480579</Field>
        <Field>12</Field>
        <Field>8290</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
    <PCK xmlns="">
        <Field>94995</Field>
        <Field>480080</Field>
        <Field>12</Field>
        <Field>8290</Field>
        <Field>LA</Field>
        <Field/>
    </PCK>
</Root>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...