Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13040|Risposta: 2

[C++] Tecniche per C++ per scaricare dati derivati di oggetti di classe durante l'analisi dei dati di file XML...

[Copiato link]
Pubblicato su 16/01/2019 09:22:59 | | | |
Questo post è stato modificato l'ultima volta da Summer il 16-1-2019 alle 09:31

1. Qual è il problema tecnico da risolvere in questo articolo?

Risolvere il problema della precedente arte secondo cui, durante l'analisi di documenti XML in linguaggio C++, i tag della classe base derivanti dai dati di classe che appaiono nel documento XML originale possono solo analizzare i dati della classe base secondo il tipo di classe base secondo il metodo di analisi convenzionale, ma non possono parzizzare completamente i dati di classe derivati.


2. Contesto tecnico

Nell'arte precedente, si usa boost::serializzazione per trasferire classi derivate con un puntatore di classe base o usa BOOST_CLASS_EXPORT macro.

Entrambi gli schemi sopra descritti nelle tecnologie esistenti si basano sul meccanismo delle classi astratte, ma poiché le classi astratte non possono essere istanziate come oggetti concreti utilizzabili, gli oggetti dichiarati come classi base nei documenti XML non possono essere analizzati. La presente invenzione è volta a garantire che i dati sia dell'oggetto di classe base stesso sia dell'oggetto di classe derivato segnato dall'oggetto di classe base possano essere correttamente analizzati e completamente preservati.


3. Lo schema tecnico fornito in questo articolo

Questo articolo non utilizza il meccanismo delle classi astratte, ma introduce il puntatore della classe base nella classe chiamata dalla classe base, dichiara la funzione di analisi della classe base come una funzione virtuale e chiama la funzione analizzante tramite il puntatore della classe base nel processo di analisi, in modo da applicare il polimorfismo per analizzare e memorizzare dinamicamente i dati, e infine garantisce che i dati sia dell'oggetto della classe base sia dell'oggetto di classe derivato possano essere memorizzati nel puntatore definito dalla classe base.
Passaggi specifici:
Passo 1: Codice C++ per progettare tutte le classi che possono corrispondere ai tag dati nel documento XML da analizzare, e analizzare i dati XML uno per uno dai tag di livello superiore.
Passo 2: Per ogni tag analizzato, determinare se ci sono altri tag che ereditano il tag come classe base, cioè se il tipo di tag deriva altri tipi di tag;
Passo 3: Se si determina che il tag corrente non è ereditato come classe base, analizza il tag corrente secondo i normali passaggi di parsing.
Passo 4: Se si determina che il tag corrente è ereditato come classe base, si determina inoltre se il contenuto descritto dal tag di classe base è subordinato all'oggetto di classe base o a un oggetto di classe derivato;
Passo 5: Se il contenuto del tag di classe base corrente è determinato a descrivere l'oggetto di classe base, analizza il tag corrente secondo i passaggi normali.
Passo 6: Se il contenuto attuale del tag della classe base descrive l'oggetto di classe derivato, modificare il codice per analizzarlo secondo il nuovo metodo di parsing: modificare la struttura dati del tipo precedente che definisce l'oggetto di classe base e definire invece il puntatore della classe base; Modificare la funzione di analisi della classe base e dichiararla come funzione virtuale;
Passo 7: Dove l'oggetto di classe base era originariamente definito per l'analisi analizzabile, viene definito invece il puntatore della classe base, e il tipo specifico di memoria viene allocato secondo il tipo descritto dal contenuto dell'etichetta, e il puntatore della classe base viene usato per chiamare la funzione di analisi e parizzare l'etichetta corrente.
Passo 8: Analizza e riproduce il tag corrente per determinare se ci sono ancora tag da analizzare;
Passo 9: Se si determina che non ci sono tag da analizzare, significa che l'analisi è stata completata e i dati sono stati salvati nella classe con l'etichetta più alta del corrispondente documento XML nella classe C++.
Passo 10: Se si determina che ci sono ancora tag non risolti, analizza il tag successivo secondo il passo 2.

Diagramma di flusso allegato

4. Sommario

C++ introduce un puntatore di classe base per assegnare oggetti del tipo corrispondente al contenuto del tag XML in base al fatto che sia una classe base o una classe derivata, e utilizza il puntatore di classe base definito per chiamare una funzione di analisi dichiarata come funzione immaginaria per analizzare il contenuto del tag della classe base XML. In questo modo, quando il tag di classe base XML descrive i dati dell'oggetto di classe base, la funzione di analisi della classe base sarà chiamata dinamicamente secondo il polimorfismo di C++, e i dati della classe base descritti dal tag della classe base possono essere correttamente analizzati e preservati. Quando il tag di classe base XML descrive i dati derivati dell'oggetto di classe, la funzione di analisi delle classi derivate sarà chiamata dinamicamente secondo il polimorfismo di C++, e i dati di classe derivati descritti dal tag di classe base possono anch'essi essere correttamente analizzati e preservati.





Precedente:Tutorial sull'analisi del protocollo QQ per Android/PC
Prossimo:Demon Spirit Summon V4.1.8 viene usato in modo discreto
Pubblicato su 16/01/2019 09:26:40 |
Il diagramma di flusso è sparito
 Padrone di casa| Pubblicato su 16/01/2019 09:31:49 |
Pubblicato il 16-01-2019 alle 09:26
Il diagramma di flusso è sparito

Il diagramma di flusso aggiunge, sai.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com