See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 13040|Vastuse: 2

[C++] C++ meetodid tuletatud klassiobjektide andmete dumpimiseks XML-failide andmete parsimisel...

[Kopeeri link]
Postitatud 16.01.2019 09:22:59 | | | |
Seda postitust toimetas viimati Summer 16.01.2019 kell 09:31

1. Milline on tehniline probleem, mida selles artiklis lahendatakse?

Lahenda probleem varasemas tehnikas, et kui parsida XML-dokumente C++ keeles, saavad baasklassi sildid tuletatud klassiandmeid, mis esinevad originaalses XML-dokumendis, ainult baasklassi andmeid vastavalt tavapärasele parsimismeetodile, kuid ei saa täielikult parsida tuletatud klassiandmeid.


2. Tehniline taust

Varasemas tehnikas kasuta boost::serialiseerimist, et ülekanda tuletatud klasse baasklassi osutiga või kasutada BOOST_CLASS_EXPORT makrot.

Mõlemad ülaltoodud skeemid olemasolevates tehnoloogiates põhinevad abstraktse klassi mehhanismil, kuid kuna abstraktseid klasse ei saa kasutada konkreetsete objektidena, ei saa XML-dokumentides baasklassidena deklareeritud objekte parseerida. Praegune leiutis on mõeldud tagama, et nii baasklassi objekti kui ka tuletatud klassiobjekti andmed oleksid õigesti parsitud ja täielikult säilitatud.


3. Selles artiklis esitatud tehniline skeem

See artikkel ei kasuta abstraktset klassi mehhanismi, vaid tutvustab baasklassi osutit baasklassi poolt kutsutud klassi, deklareerib baasklassi parsimisfunktsiooni virtuaalfunktsioonina ning kutsub parsimisfunktsiooni läbi baasklassi osuti parsimisprotsessis, et rakendada polümorfismi andmete dünaamiliseks parsimiseks ja salvestamiseks ning lõpuks tagab, et nii baasklassi objekti kui ka baasklassist tuletatud klassiobjekti andmed saab salvestada baasklassi defineeritud osutis.
Konkreetsed sammud:
1. samm: C++ kood, et kujundada kõik klassid, mis võivad vastata parsitava XML-dokumendi andmesiltidele, ning parseerida XML-andmeid ükshaaval tipptaseme siltidest.
2. samm: Iga parsitud sildi puhul määrake, kas leidub teisi silte, mis pärivad sildi baasklassina, st kas siltitüüp tuletab teisi siltitüüpe;
3. samm: Kui on kindlaks tehtud, et praegune silt ei pärandata baasklassina, parseeri praegune silt vastavalt tavapärastele parsimissammudele.
4. samm: Kui selgub, et praegune silt pärandatakse baasklassina, tuleb edasi selgitada, kas baasklassi sildi kirjeldatud sisu on allutatud baasklassi objektile või tuletatud klassiobjektile;
5. samm: Kui praeguse baasklassi sildi sisu kirjeldab baasklassi objekti, parseeri praegune silt vastavalt tavapärastele sammudele.
6. samm: Kui praegune baasklassi sildi sisu kirjeldab tuletatud klassiobjekti, muuda koodi nii, et see parse'iks vastavalt uuele parsimismeetodile: muuda eelmise tüübi andmestruktuuri, mis määratleb baasklassi objekti, ja määra selle asemel baasklassi viide; Muuda baasklassi parsimisfunktsiooni ja deklareeri see virtuaalseks funktsiooniks;
7. samm: Kui algselt määratleti baasklassi objekt parsimiseks, määratletakse selle asemel baasklassi osut, millele määratakse spetsiifiline mälu tüüp vastavalt sildi sisus kirjeldatud tüübile, ning baasklassi osutit kasutatakse parsimisfunktsiooni kutsumiseks praeguse sildi parsimiseks.
8. samm: Parsi ja mängi praegune silt, et määrata, kas on veel silte, mida parsida;
9. samm: Kui selgub, et parsimiseks pole ühtegi silti, tähendab see, et parsimine on lõpetatud ja andmed salvestatud klassi, millel on kõrgeim silt vastavas XML-dokumendis C++ klassis.
10. samm: Kui selgub, et on veel silte, mida pole lahendatud, analüüsi järgmine silt vastavalt sammule 2.

Vooskeem lisatud

4. Kokkuvõte

C++ tutvustab baasklassi osutit, mis määrab vastava tüübi objektid XML-sildi sisule vastavalt sellele, kas see on baasklass või tuletatud klass, ning kasutab defineeritud baasklassi osutit, et kutsuda kujuteldava funktsioonina deklareeritud parsimisfunktsiooni XML baasklassi sildi sisu parsimiseks. Nii, kui XML baasklassi silt kirjeldab baasklassi objektiandmeid, kutsutakse baasklassi parsimisfunktsioon dünaamiliselt vastavalt C++ polümorfismile ning baasklassi sildi kirjeldatud baasklassi andmed saab õigesti parsida ja säilitada. Kui XML baasklassi silt kirjeldab tuletatud klassiobjekti andmeid, kutsutakse tuletatud klassi parsimisfunktsioon dünaamiliselt vastavalt C++ polümorfismile ning tuletatud klassiandmeid, mida kirjeldab baasklassi silt, saab samuti õigesti parsida ja säilitada.





Eelmine:QQ protokolli analüüsi juhend Android/PC jaoks
Järgmine:Demon Spirit Summon V4.1.8 kasutatakse tagasihoidlikult
Postitatud 16.01.2019 09:26:40 |
Vooskeem on kadunud
 Üürileandja| Postitatud 16.01.2019 09:31:49 |
Avaldatud 2019-1-16 09:26
Vooskeem on kadunud

Vooskeem lisab, tead küll
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com