Чтение сложных XML-файлов - PullRequest
1 голос
/ 11 марта 2011

Я пытаюсь прочитать сложный XML-файл с помощью Spring Batch, используя StaxEventItemReader . Когда речь идет о простой структуре, это не проблема. Однако я должен иметь дело с этим видом 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 FragRootElementName, который в этом случае не может быть настоящим корнем, PivotContrat, для проблем с объемом.

Мне нужно прочитать каждый узел 1-го уровня, чтобы упорядочить их в соответствующих объектах (с помощью маршаллера JAXB).

Есть ли какой-либо способ использовать кратные части fragRootElementName?
Есть ли другой способ работы с этой структурой XML?
Я не видел, как добиться такой обработки.

1 Ответ

0 голосов
/ 07 сентября 2011

Судя по вашему описанию, вам лучше всего реализовать собственный пользовательский ItemReader .Встроенный StaxEventItemReader поддерживает только один фрагмент RootElement, поскольку это наиболее распространенный вариант использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...