Ich verwende StaxEventItemReader in Spring Batch, um XML-Daten zu lesen und Java-Objekte zuzuordnen. Ich bin in der Lage, Elemente in XML erfolgreich zu wiederholen, aber das Problem ist, dass ich Header-Informationen aus meinem XML lesen möchte. Gibt es eine Möglichkeit oder Unterstützung von StaxEventItemReader zum Lesen von Header-Informationen.So lesen Sie Header-Informationen mit StaxEventItemReader im Frühjahr Stapel
<?xml version="1.0" encoding="UTF-8"?>
<Contracts>
<TransactionInfo><Receiver>
<Code>CAT</Code>
<Name>CAT</Name>
</Receiver>
<SourceFile>
<FilePath>\\nft2a\ft$\transfer\EAD7SRR1.20160510_02363859.xml
</FilePath>
<FileName>EAD7SRR1.20160510_02363859.xml
</FileName>
<FileType>XML</FileType>
<FileTime>2016-05-10T02:36:41.337-07:00
</FileTime>
</SourceFile>
</TransactionInfo>
<Contract ContractID="Contract Rate Feed Test - LCL"
Carrier="DHL Danzas Air & Ocean" TermBegin="2015-09-15" TermEnd="2016-09-14"
CarrierOrgID="20455">
<LineItem ReferenceID="135516504144" Origin="Antwerp, BE" OriginCity="Antwerp" DestinationCity="Kpeme">
<Surcharge Amount="25.0" Basis="BILLADING" Code="CUSTOM" Name="Document Turnover Fee" CurrencyCode="USD" />
<Surcharge Amount="10.0" Basis="KILO" Code="CUSTOM" Name="Hazardous" CurrencyCode="USD" />
</LineItem>
<LineItem ReferenceID="135516504145" Origin="Antwerp, BE"OriginCity="Antwerp" DestinationCity="Libreville">
<Surcharge Amount="8.0" Basis="KILO" Code="CUSTOM" Name="Origin Handling"
CurrencyCode="USD" />
</LineItem>
</Contract>
<Contract ContractID="Contract_1005_Test_LCL"
GTNContractID="66860" CarrierOrgID="20455">
<LineItem ReferenceID="135516559003" Origin="Hong Kong, HK" DestinationCity="Hamburg">
<Surcharge Amount="10.0" Basis="KILO" Code="ACD" Name="Arbitraries Charge (Destination)" CurrencyCode="USD" />
</LineItem>
</Contract>
</Contracts>
Wie kann ich lesen TransactionInfo Meine Konfiguration
<bean id="contractReader" class="org.springframework.batch.item.xml.StaxEventItemReader">
<property name="resource" value="classpath:sample-inputfile-srr-ocean.xml" />
<property name="fragmentRootElementName" value="Contract" />
<property name="unmarshaller">
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.cat.srr.gtn.domain.Contract</value>
</list>
</property>
</bean>
</property>
</bean>
<batch:job id="gtnContractJob">
<batch:step id="step1" next="step2">
<tasklet ref="ftpPullTask" />
</batch:step>
<batch:step id="step2">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="multiResourceReader" writer="contractWriter"
processor="contractProcessor" commit-interval="10" />
</batch:tasklet>
</batch:step>
<batch:listeners>
<batch:listener ref="jobListener" />
</batch:listeners>
</batch:job>
ist mir bitte helfen, wie ich Informationen über Feder Batch-Header lesen kann.
Wie werden diese Objektwerte in Processor beca abgerufen? verwenden Prozessor kann nur 1 Objekt ItemProcessor? –
Sushil
Sie können ItemProcessor
Ich habe versucht, Object in ItemProcessor (ItemProcessor) zu verwenden, aber es funktioniert nicht. Kannst du mir bitte eine Probe für den Artikelprozessor für diesen Fall geben? ? Die Steuerung selbst kommt nicht zu ItemProcessor –
Sushil