Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 13040|Svar: 2

[C++] Tekniker för C++ att dumpa härledda klassobjektdata vid tolkning av XML-fildata...

[Kopiera länk]
Publicerad på 2019-01-16 09:22:59 | | | |
Detta inlägg redigerades senast av Summer den 16 09:31 2019

1. Vilket är det tekniska problemet som ska lösas i denna artikel?

Lös problemet i den tidigare tekniken att när man tolkar XML-dokument i C++-språket kan basklasstaggarna som förekommer i originaldokumentet endast tolka basklassdata enligt basklasstypen enligt den konventionella parsningsmetoden, men kan inte helt tolka den härledda klassdatan.


2. Teknisk bakgrund

I tidigare teknik, använd boost::serialization för att överföra härledda klasser med en basklasspekare eller använd BOOST_CLASS_EXPORT makro.

Båda ovanstående scheman i befintliga teknologier baseras på den abstrakta klassmekanismen, men eftersom abstrakta klasser inte kan instansieras som konkreta objekt som kan användas, kan objekt deklarerade som basklasser i XML-dokument inte parsas. Denna uppfinning syftar till att säkerställa att data från både basklassobjektet självt och det härledda klassobjektet som är markerat av basklassobjektet kan tolkas korrekt och bevaras helt.


3. Det tekniska schemat som ges i denna artikel

Denna artikel använder inte den abstrakta klassmekanismen, utan introducerar basklasspekaren i den klass som basklassen anropar, deklarerar basklassparsningsfunktionen som en virtuell funktion och anropar parsfunktionen genom basklasspekaren i parsningsprocessen, för att tillämpa polymorfism för att dynamiskt parsa och lagra data, och slutligen säkerställa att data från både basklassobjektet och det härledda klassobjektet härlett från basklassen kan lagras i basklassdefinierade pekaren.
Specifika steg:
Steg 1: C++-kod för att designa alla klasser som kan motsvara datataggarna i XML-dokumentet som ska tolkas, och analysera XML-data en efter en från toppnivåtaggarna.
Steg 2: För varje taggparsed, avgör om det finns andra taggar som ärver taggen som basklass, det vill säga om taggtypen härleder andra taggtyper;
Steg 3: Om det fastställs att den aktuella taggen inte ärvs som basklass, analysera den aktuella taggen enligt de normala parsningsstegen.
Steg 4: Om det fastställs att den aktuella taggen ärvs som en basklass, avgör vidare om innehållet som beskrivs av basklasstaggen är underordnat basklassobjektet eller ett härlett klassobjekt;
Steg 5: Om innehållet i den aktuella basklasstaggen bestäms för att beskriva basklassobjektet, analysera den aktuella taggen enligt normala steg.
Steg 6: Om innehållet i den aktuella basklasstaggen beskriver det härledda klassobjektet, modifiera koden för att tolka enligt den nya parsingmetoden: ändra datastrukturen för den föregående typen som definierar basklassobjektet och definiera istället basklasspekaren; Modifiera basklassparsningsfunktionen och deklarera den som en virtuell funktion;
Steg 7: Där basklassobjektet ursprungligen definierades för parsing, definieras basklasspekaren istället, och den specifika typen av minne tilldelas den enligt typen som beskrivs av etikettens innehåll, och basklasspekaren används för att anropa parsfunktionen för att tolka den aktuella etiketten.
Steg 8: Analysera och spela den aktuella taggen för att avgöra om det fortfarande finns taggar att tolka;
Steg 9: Om det fastställs att inga taggar ska tolkas betyder det att parsningen har slutförts och att datan har sparats i klassen med högst etikett i motsvarande XML-dokument i C++-klassen.
Steg 10: Om det fastställs att det fortfarande finns taggar som inte har lösts, analysera nästa tagg enligt steg 2.

Bifogat flödesschema

4. Sammanfattning

C++ introducerar en basklasspekare för att tilldela objekt av motsvarande typ till XML-taggens innehåll beroende på om det är en basklass eller en härledd klass, och använder den definierade basklasspekaren för att anropa en parsningsfunktion deklarerad som en imaginär funktion för att tolka innehållet i XML-basklasstaggen. På detta sätt, när XML-basklasstaggen beskriver basklassobjektdata, kommer basklassparsningsfunktionen att anropas dynamiskt enligt polymorfismen av C++, och basklassdata som beskrivs av basklasstaggen kan parsas och bevaras korrekt. När XML-basklasstaggen beskriver data från den härledda klassobjektet, kommer den härledda klassparsingfunktionen att anropas dynamiskt enligt polymorfismen av C++, och de härledda klassdata som beskrivs av basklasstaggen kan också parsas och bevaras korrekt.





Föregående:QQ-protokollanalysguide för Android/PC
Nästa:Demon Spirit Summon V4.1.8 används på ett lågmält sätt
Publicerad på 2019-01-16 09:26:40 |
Flödesschemat är borta
 Hyresvärd| Publicerad på 2019-01-16 09:31:49 |
Publicerad den 2019-1-16 09:26
Flödesschemat är borta

Flödesschemat lägger till, du vet
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com