我正在尝试使用StaxEventItemReader使用 Spring Batch 读取复杂的 XML 文件。处理简单结构时,这不是问题。但是,我必须处理这种 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<PivotContrat xsi:noNamespaceSchemaLocation="PivotContrat.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Emetteur>
<Id>String</Id>
<Nom>String</Nom>
</Emetteur>
<Recepteur>
<Id>String</Id>
<Nom>String</Nom>
</Recepteur>
<Compteurs>text</Compteurs>
<IndicateurVide>String</IndicateurVide>
<Policy>
<Identifiant>
<Id>String</Id>
</Identifiant>
<Evenement>
<Id>String</Id>
<Origine>String</Origine>
<User>String</User>
<Dates>
<DateEvt>1967-08-13</DateEvt>
<DateEffetDebut>1967-08-13</DateEffetDebut>
<DateEffetFin>1967-08-13</DateEffetFin>
</Dates>
</Evenement>
<Statut>
<Code>String</Code>
<DateEffet>1967-08-13</DateEffet>
<StatutPrec>1967-08-13</StatutPrec>
</Statut>
<Produit>
<Id>String</Id>
</Produit>
<Distributeur>
<Id>String</Id>
</Distributeur>
<Producteur>
<Id>String</Id>
</Producteur>
<Client>
<Id>String</Id>
</Client>
<DateSouscription>1967-08-13</DateSouscription>
<Periodicite>0</Periodicite>
<Montant>3.14159265358979E0</Montant>
<Duree>0</Duree>
<ReferencesBancaire>
<RIB>String</RIB>
</ReferencesBancaire>
<GarantiesSouscrites>
<Id>String</Id>
</GarantiesSouscrites>
</Policy>
</PivotContrat>
第一个节点是某种标题。(Emetteur、Recepteur 等......)
策略节点是一个集合,可能非常大。
我的问题是我只能定义 1 个 fragmentRootElementName,在这种情况下,它不能是卷问题的真正根 PivotContrat。
我需要读取每个 1 级节点以将它们编组到适当的对象中(使用 JAXB 编组器)。
有什么方法可以使用多个 fragmentRootElementName?
有没有其他方法可以使用这个 XML 结构?
我还没有看到如何实现这种处理。