JAXP Parser di un XML enorme

di il
7 risposte

JAXP Parser di un XML enorme

Buongiorno a tutti.

Chiedo oggi lumi su come posso realizzare un parser XML.

Io dispongo di un file XML di dimensioni enormi, più di 730 MB, l'indice globale dei codici LEI.

Da questo file, devo estrarre solo i codici LEI, che sono delle semplici costanti numeriche di venti cifre.

Ho rovato ad usare come parser un JAXP, per la precisione questo: "http://www.mrwebmaster.it/java/xml-java-esempio-parsing-jaxp_7488_2.html".

Il problema è che l'applicazione, pur funzionando mi restituisce un errore di out of memory.

C'è qualcuno che mi sà aiutare? Come potrei risolvere?

Grazie

7 Risposte

  • Re: JAXP Parser di un XML enorme

    Scrivendo banalmente il tuo parser. addirittura potrebbe bastarti grep e awk
  • Re: JAXP Parser di un XML enorme

    Meglio ancora piglia il Csv
    https://www.kvk.nl/english/how-to-register-deregister-and-report-changes/legal-entity-identifier-lei/lei-database/
  • Re: JAXP Parser di un XML enorme

    Purtroppo non posso usare costrutti tipici di Linux, anche se mi piacerebbe perchè, questa applicazione la devo sviluppare per l'ufficio, e quindi andrà integrata su un'applicazione che si chiama livecycle, che gira solo sotto Windows.

    Periodicamente quindi, quando verranno aggiunti nuovi LEI, la banca dovrà parsare i nuovi file ed aggiornare i documenti.

    Se esistesse un modo di usare un equivalente di sed sotto windows, o in un'applicazione Java avrei risolto.

    Grazie
  • Re: JAXP Parser di un XML enorme

    @+m+ NON SERVE scrivere il parser, anche perche' NON E' cosi' banale!

    MA BASTA cercare con Google le soluzioni GIA' IMPLEMENTATE

    Al minimo:

    1) si usa il parser Sax: https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html
    2) forse, anche meglio, Apache Digester: https://projects.apache.org/project.html?commons-digester

    ESISTE sed, awk, grep, ... ANCHE per Windows!
  • Re: JAXP Parser di un XML enorme

    migliorabile ha scritto:


    @+m+ NON SERVE scrivere il parser, anche perche' NON E' cosi' banale!
    Bhè non so se è banale, ma un parser XML normalmente lo scrivo in 15 minuti.

    Tornando al resto: taglia un pezzetto dell'XML e caricalo da qualche parte, così vediamo.

    Se la struttura è questa allora anche meno di 15 minuti
    
    <LEIRecord><LEI>7245003LAUXH056OXW62</LEI><Entity><LegalName>Blom Industrial Products B.V.</LegalName><LegalAddress><Line1>Prof. Winternitzlaan 1</Line1><City>Laag-Soeren</City><Country>NL</Country><PostalCode>6957DM</PostalCode></LegalAddress><HeadquartersAddress><Line1>Prof. Winternitzlaan 1</Line1><City>Laag-Soeren</City><Country>NL</Country><PostalCode>6957DM</PostalCode></HeadquartersAddress><BusinessRegisterEntityID register="Kamer van Koophandel">30196154</BusinessRegisterEntityID><LegalForm>Besloten Vennootschap</LegalForm><EntityStatus>ACTIVE</EntityStatus></Entity><Registration><InitialRegistrationDate>2014-07-11T00:00:00.000+02:00</InitialRegistrationDate><LastUpdateDate>2016-07-14T08:43:40.504+02:00</LastUpdateDate><RegistrationStatus>ISSUED</RegistrationStatus><NextRenewalDate>2017-07-11T12:17:00.724+02:00</NextRenewalDate><ManagingLOU>724500A93Z8V1MJK5349</ManagingLOU></Registration></LEIRecord></LEIRecords>
  • Re: JAXP Parser di un XML enorme

    @+m+ ed io, in 10 (o anche meno) secondi, ti fornisco un esempio che il tuo parser non supporta (SENZA andare a cercare cose particolarmente complicate )

    In ogni caso rimane il problema di fare il parsing ed analizzare 730 MB di XML.

    Il CVS e' un'alternativa valida.

    Uno lo puo' anche leggere come testo, ma si semplifica la vita da una parte, e se la complica da un'altra.
  • Re: JAXP Parser di un XML enorme

    migliorabile ha scritto:


    @+m+ ed io, in 10 (o anche meno) secondi, ti fornisco un esempio che il tuo parser non supporta (SENZA andare a cercare cose particolarmente complicate )
    Scusa, ma hai idea di cosa sia un parser XML specifico per un singolo formato?
    Perchè ne ho fatti a centinaia, da piccoli a complessi.

    Detto questo...
    In ogni caso rimane il problema di fare il parsing ed analizzare 730 MB di XML.
    Non c'è nessun problema, se lo schema, come mi aspetto sia, è banale e simile a quello che ho messo sopra, basta un programma di poche righe che legga il file di testo linea per linea estraendo le informazioni utili.
    Per Delphi 15 minuti, per Java no so, ma non tanto di più.
    Il CVS e' un'alternativa valida.

    Uno lo puo' anche leggere come testo, ma si semplifica la vita da una parte, e se la complica da un'altra.
    E dove se la complica? Riconoscere un file di testo tipicamente banale come questo richiede un paio di minuti, con un programma eseguibile, forse un poco di più con Java con tutto l'overhead che si porta dietro.
Devi accedere o registrarti per scrivere nel forum
7 risposte