Spring Batch DelimitedLineTokenizer Klasse quoteCharacter Eigenschaft Verhalten

Habe ich ein item-reader wie folgt:

<beans:bean id="myItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<beans:property name="resource" ref="myFileResource" />
    <beans:property name="lineMapper">
        <beans:bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <beans:property name="lineTokenizer">
                <beans:bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <beans:property name="delimiter" value="|"/>
                    <beans:property name="quoteCharacter" value="~"/>
                    <beans:property name="names" value="${my_column_names}" />
                </beans:bean>
            </beans:property>
            <beans:property name="fieldSetMapper">
            <beans:bean class="${my_mapper_class_name}" />
        </beans:property>
    </beans:bean>
</beans:property>

Als klar von oben, ich bin verändert, die quote-Zeichen aus Standard " (doppelte Anführungszeichen) zu ~ (tilt-Zeichen)

Nun, Java-Docs auf DelimitedLineTokenizer auf Anführungszeichen sagt:

Öffentlichen Set-Methode für die quoteCharacter. Die Anführungszeichen können verwendet werden, um zu verlängern ein Feld über Zeilenenden oder umschließen eine Zeichenkette, die das Trennzeichen enthält. Innerhalb eines zitierten token-Anführungszeichen können verwendet werden, um die Flucht an sich, also "a""b""c" mit dem Token zu einem"b"c.

Damit, wenn meine Daten selbst werden mit Trennzeichen (das pipe-Zeichen in meinem Fall), darf ich dann umgeben Sie es mit der Anführungszeichen - was ich auch Tat. E. g. Zeile unten, wo die Dritte Spalte enthält die Trennzeichen:

oneColumn|twoColumn|three~|~Column|fourColumn

Jedoch, den Wert, die kommt in meinem java-Objekt für Spalte drei "drei~|~Spalte" und nicht "drei|Spalte", wie es sein sollte.

Sollte nicht die Anführungszeichen verwendet, um zu entkommen Trennzeichen in den Daten werden automatisch verarbeitet und ignoriert, während der Wert in der Eigenschaft der resultierenden java-Objekt Element?

Ist das ersetzen der Anführungszeichen mit einem leeren string wieder in den Schreiber (PreparedStatementSetter oder LineAggregator) die einzige Lösung für dieses ?

Vielen Dank für das Lesen!

InformationsquelleAutor Vicky | 2013-08-01
Schreibe einen Kommentar