简体   繁体   English

BizTalk平面文件嵌套xml

[英]BizTalk flat file nested xml

BizTalk flat file schema with nested nodes is giving me some trouble. 带有嵌套节点的BizTalk平面文件架构给我带来了一些麻烦。 What is happening is that the child record delimiter is showing up as data in the last field. 发生的情况是子记录定界符在最后一个字段中显示为数据。 I followed the recipe from this old blog post. 我遵循了这个旧博客文章中的食谱。

Managing Flat Files in BizTalk 2004 在BizTalk 2004中管理平面文件

Here is the input and schema are here. 这是输入,这里是模式。

https://bitbucket.org/kirk98445/stuff/src/90becbaa638b1bc42555cf84f2a1a4cb4f3cd3fc?at=master https://bitbucket.org/kirk98445/stuff/src/90becbaa638b1bc42555cf84f2a1a4cb4f3cd3fc?at=master

Result is that the xml looks fine for the most part except for the crlf in the user and ponumber fields. 结果是,除了user和ponumber字段中的crlf之外,xml大部分情况下看起来都很好。

<Orders xmlns="http://KS.Biztalk.EDI.Common.Amtech.ASN.FlatFileSchema1"><Header><user>USER_1234
</user></Header><Order><OrderHeader><ponumber>PO_001
</ponumber></OrderHeader><LineItems><LineItem><item>Item32  33</item></LineItem><LineItem><item>Item63  45</item></LineItem></LineItems></Order><Order><OrderHeader><ponumber>PO_002
</ponumber></OrderHeader><LineItems><LineItem><item>Item454 12</item></LineItem></LineItems></Order></Orders>

There are issues with your schema. 您的架构存在问题。 Record "Orders" - The Child Delimiter Type property is not set for a delimited record. 记录“订单”-未为定界记录设置子定界符类型属性。 Record "Order" - The Child Delimiter Type property is not set for a delimited record. 记录“订单”-未为分隔记录设置子定界符类型属性。

Usually with this sort of flat file I would create one schema for the header, and then one for the Order & Order Lines. 通常,使用这种平面文件,我会为标题创建一个架构,然后为订单和订单行创建一个架构。 Then in the flat file dissembler define set the Header schema and the Document schema to the above two. 然后,在平面文件反汇编器中,将Header模式和Document模式设置为上述两个。 This way it will de-batch you will get a message for each purchase order in the file. 这样,它将对您的批次进行批处理,您将在文件中收到有关每个采购订单的消息。

But if you want it in a single schema, try this schema that uses a Sequence Group node. 但是,如果要在单个架构中使用它,请尝试使用使用“序列组”节点的架构。

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://KS.Biztalk.EDI.Common.Amtech.ASN.FlatFileSchema1" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" elementFormDefault="qualified" targetNamespace="http://KS.Biztalk.EDI.Common.Amtech.ASN.FlatFileSchema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <b:schemaInfo standard="Flat File" root_reference="Orders" default_pad_char=" " pad_char_type="char" count_positions_by_byte="false" parser_optimization="speed" lookahead_depth="3" suppress_empty_nodes="true" 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="hex" default_child_delimiter="0x0D 0x0A" default_child_order="postfix" />
      <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="Orders">
    <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:element minOccurs="1" maxOccurs="1" name="Header">
          <xs:annotation>
            <xs:appinfo>
              <b:recordInfo sequence_number="1" structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="HEADER" child_delimiter_type="hex" child_delimiter="0x09" child_order="prefix" />
            </xs:appinfo>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:annotation>
                <xs:appinfo>
                  <b:groupInfo sequence_number="0" />
                </xs:appinfo>
              </xs:annotation>
              <xs:element name="user" 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="2" />
            </xs:appinfo>
          </xs:annotation>
          <xs:element name="OrderHeader">
            <xs:annotation>
              <xs:appinfo>
                <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="PURCHASE" child_order="prefix" child_delimiter_type="hex" child_delimiter="0x09" 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 name="ponumber" 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="LineItem">
            <xs:annotation>
              <xs:appinfo>
                <b:recordInfo structure="delimited" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" tag_name="LINEITEM" child_delimiter_type="hex" child_delimiter="0x09" child_order="prefix" 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 name="item" type="xs:string">
                  <xs:annotation>
                    <xs:appinfo>
                      <b:fieldInfo sequence_number="1" justification="left" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:element>
                <xs:element name="Qty" type="xs:string">
                  <xs:annotation>
                    <xs:appinfo>
                      <b:fieldInfo sequence_number="2" justification="left" />
                    </xs:appinfo>
                  </xs:annotation>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>    

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM