PDA

View Full Version : [C++] Parsing XML con DOM


alesnoce
28-12-2005, 11:44
Salve a tutti.

Sto provando a fare il parsing di documenti xml con dom, e per fare questo utilizzo dev-c++ e la libreria xerces 2.5.

Il codice che ho scritto finora viene compilato senza problemi, solo che quando vado a eseguirlo mi appare la schermata windows che mi chiede se voglio inviare la segnalazione degli errori e in conclusione il programma non funziona.

Dopo alcune prove sono riuscito a scoprire che l'istruzione che manda in tilt il programma è
DOMElement* XMI = modelDoc->getDocumentElement();

Vado a guardare la guida dom e scopro che getDocumentElement() è pure virtual, il che spiegherebbe perché il codice funziona a compile time ma non a run time.

A questo punto mi chiedo: devo creare una classe figlia di DOMDocument e ridefinire il metodo? Mi sembra assurdo.

Avete qualche suggerimento? Sto cercando con google ma finora non ho trovato traccia di override del metodo.

Grazie

alesnoce
28-12-2005, 15:28
Rettifico quanto sopra: l'errore viene sì dato da quell'istruzione, ma dipende dal fatto che modelDoc DOMDocument* modelDoc = 0;

try { modelDoc = builder->parseURI(_XMLfile); } resta nullo anche dopo l'assegnazione.

Sulla documentazione è detto che DOMBuilder::parseURI() restituisce 0 se il builder è asincrono, e che deve essere sincrono perché il documento xml venga assegnato al DOMDocument* modelDoc.

Quello che non ho trovato è come si sincronizza un DOMBuilder.

Quindi, fermo restando che il fatto che in xerces ci siano funzioni pure virtual mi è ancora poco chiaro, qualcuno sa come sincronizzare un DOMBuilder?

alesnoce
28-12-2005, 15:32
DOMBuilder* builder = ((DOMImplementationLS*)impl)->
createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);

era già sincronizzato!
A questo punto non so perché non trova il file