2017-09-21 4 views
0

ich eine XSD für flache Datei als Ergebnis von XML-Mapping hat, so etwas wie:BizTalk Flat-Datei CRLF erzeugt, auch wenn leeren Daten

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema xmlns="http://mynamespace" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://mynamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:annotation> 
    <xs:appinfo> 
     <schemaEditorExtension:schemaInfo namespaceAlias="b" extensionClass="Microsoft.BizTalk.FlatFileExtension.FlatFileExtension" standardName="Flat File" xmlns:schemaEditorExtension="http://schemas.microsoft.com/BizTalk/2003/SchemaEditorExtensions" /> 
     <b:schemaInfo standard="Flat File" codepage="65001" 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="false" early_terminate_optional_fields="false" allow_message_breakup_of_infix_root="false" compile_parse_tables="false" root_reference="File" /> 
    </xs:appinfo> 
    </xs:annotation> 
    <xs:element name="File"> 
    <xs:annotation> 
     <xs:appinfo> 
     <b:recordInfo structure="delimited" child_delimiter_type="hex" child_delimiter="0x0D 0x0A" child_order="infix" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:annotation> 
      <xs:appinfo> 
      <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
      </xs:appinfo> 
     </xs:annotation> 
     <xs:element minOccurs="0" maxOccurs="unbounded" name="TransactionDate"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:recordInfo structure="delimited" child_delimiter_type="hex" child_delimiter="0x0D 0x0A" child_order="infix" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="hex" repeating_delimiter="0x0D 0x0A" /> 
      </xs:appinfo> 
      </xs:annotation> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:annotation> 
       <xs:appinfo> 
        <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
       </xs:appinfo> 
       </xs:annotation> 
       <xs:element minOccurs="0" maxOccurs="unbounded" name="Items"> 
       <xs:annotation> 
        <xs:appinfo> 
        <b:recordInfo structure="delimited" child_delimiter_type="hex" child_delimiter="0xD 0xA" child_order="infix" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" repeating_delimiter_type="hex" repeating_delimiter="0x0D 0x0A" /> 
        </xs:appinfo> 
       </xs:annotation> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:annotation> 
         <xs:appinfo> 
         <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
         </xs:appinfo> 
        </xs:annotation> 
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Item"> 
         <xs:annotation> 
         <xs:appinfo> 
          <b:recordInfo structure="positional" sequence_number="1" preserve_delimiter_for_empty_data="true" suppress_trailing_delimiters="false" /> 
         </xs:appinfo> 
         </xs:annotation> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:annotation> 
          <xs:appinfo> 
           <groupInfo sequence_number="0" xmlns="http://schemas.microsoft.com/BizTalk/2003" /> 
          </xs:appinfo> 
          </xs:annotation> 
          <!-- My elements here --> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 

        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element minOccurs="1" maxOccurs="1" default="EOF" name="EOF" type="xs:string"> 
      <xs:annotation> 
      <xs:appinfo> 
       <b:fieldInfo sequence_number="2" justification="left" pos_offset="0" pos_length="3" /> 
      </xs:appinfo> 
      </xs:annotation> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Das Problem ist, wenn die XML-Daten haben, haben wir ein richtiges Ergebnis , so etwas wie:

line1 
line2 
line3 
EOF 

Aber wenn wir keine Daten (XML nur nur Namespace)

<ns:SAPFile Channel="Eziemall" xmlns:ns="http://mynamespace" /> 

dann die flache Datei ist:

CRLF (for easy reading) 
EOF 

Wie kann ich von CRLF aus meiner Wohnung Datei loszuwerden, ich in der ersten Zeile nur EOF will.

+1

Nur eine Vermutung: tun Sie, durch Zufall, einen Postfix-Begrenzer mit einem Newline-Trennzeichen auf Ihrem Root-Datensatz haben? Dieser Postfix-Begrenzer wird vor dem EOF ein Newline-Zeichen einfügen. –

+0

@PieterVandenheede Sie können auf etwas sein: 'preserve_delimiter_for_empty_data =" true "suppress_trailing_delimiters =" false "' schlägt vor, dass es eine Möglichkeit gibt, dies umzuschalten. Es ist eine Weile her, dass ich den BizTalk-Schemeneditor zum letzten Mal benutzt habe, sodass ich nicht mit Sicherheit antworten kann. – Filburt

+0

@PieterVandenheede: unten ist meine ganze xsd-Datei, der Teil von ("" was ich verberge ist nicht wichtig, denke ich. Es gibt überhaupt kein Postfix – neitcouq

Antwort

0

Ich habe gerade versucht, Ihr Schema mit einer Karte, wo ich nichts zum Ziel zugeordnet, und ich habe nicht die CRLF.

Also ist das Problem in Ihrer Karte, anstatt das Schema.

Sie müssen eine Verknüpfung zu TransactionDate hinzufügen, die das unterdrückt, wenn keine Daten vorhanden sind.

enter image description here

+0

Brilliant! danke Dijkgraaf! – neitcouq