Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [c++]Sax e observer

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]Sax e observer

    ciao.
    Devo fare il parsing di un formato xml open per l'architettura di nome ifc.
    Il documento xml è composto di tag che hanno due attributi ref e id.
    L'attributo ref rimanda ad un id e l'attributo id puo' essere utilizzato in un ref.
    Un tag ref o id che sia ha un nome che è uguale a quello della classe nel modello
    ad oggetti di queesto formato.
    Chiedo scusa se rompo ma ho trovato una nuova soluzione piu' efficente e ne discuto qui.

    Sax è molto veloce , ed è per questo che l'ho scelto per fare il parsing di xml
    di notevoli dimensioni 200/300 mb l'uno.
    ANche perchè molti dati non mi interessano quindi non devo navigare qui o la come
    nel dom, se sono nella mappa delle classi utilizzate da me registrate prendo i dati
    , altrimenti no.

    a mano a mano che vado avanti nel documentoxml , instanzio
    una classe ogni volta che viene trovato un tag con il nome di quella classe.
    quando trovo un id ed una classe instanzio quella classe , la popolo con i
    dati dei tag interni a quella classe e chiamo il metodo notify su tutti gli
    osservatori che si sono agganciati al subject con quella chiave.Aggancio il notifire
    ogni volta che trovo un ref e lo aggancio con il valore del ref che corrisponde ad una
    classe con id uguale .
    poi chiamo l'update con un parametro data , l'oggetto di quella classe popolata
    e setto la variabile del get/set a quella classe al posto del ref
    con indirizzo a questo parametro.

    in pratica mentre avanzo nell' xml con sax mettiamo , trovo un id ,
    popolo l'oggetto con i dati che mi arrivano subito(sono successivi e contenuti
    tra i tag della classe del tag con id="xxx" )e quindi richiamando notify "trasformo"
    tutti i ref in riferimenti a a questo oggetto popolato(che sarebbe la classe puntata dai
    ref.

    Il problema nasce quando trovo un ref che punta ad un id gia passato, che è gia stato
    popolato e assegnato (o magari non è stato assegnato a nessun ref perchè fino a quel
    punto non c'erano ref a quell id).
    Che soluzione posso usare?
    La prima che mi viene in mente è quella di salvare il riferimento alle classi id
    gia passate in un vector nella classe subject per poi riutilizzarle dopo, ma questo abbatte le prestazioni ,
    esiste un metodo migliore per questa soluzione?
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    up

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non è semplice rispondere senza conoscere il design che hai usato.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.