Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 13040|Atsakyti: 2

[C++] C++ metodai, skirti išvestiniams klasės objekto duomenims iškelti analizuojant XML failo duomenis...

[Kopijuoti nuorodą]
Paskelbta 2019-01-16 09:22:59 | | | |
Šį pranešimą paskutinį kartą redagavo Vasara 2019-1-16 09:31

1. Kokią techninę problemą reikia išspręsti šiame straipsnyje?

Išspręskite ankstesnės technikos problemą, kad analizuojant XML dokumentus C++ kalba, bazinės klasės žymės išvestiniai klasės duomenys, kurie rodomi originaliame XML dokumente, gali analizuoti tik pagrindinės klasės duomenis pagal bazinės klasės tipą pagal įprastą analizės metodą, bet negali visiškai išanalizuoti išvestinių klasės duomenų.


2. Techninės aplinkybės

Ankstesnėje technikoje naudokite boost::serialization, kad perkeltumėte išvestines klases su bazinės klasės žymekliu arba naudokite BOOST_CLASS_EXPORT makrokomandą.

Abi aukščiau išvardytos esamų technologijų schemos yra pagrįstos abstrakčių klasių mechanizmu, tačiau kadangi abstrakčios klasės negali būti instanciuojamos kaip konkretūs objektai, kuriuos galima naudoti, objektai, deklaruojami kaip bazinės klasės XML dokumentuose, negali būti analizuojami. Šis išradimas skirtas užtikrinti, kad tiek bazinės klasės objekto duomenys, tiek išvestinės klasės objektas, pažymėtas bazinės klasės objektu, galėtų būti teisingai išanalizuoti ir visiškai išsaugoti.


3. Šiame straipsnyje numatyta techninė schema

Šis straipsnis nenaudoja abstrakčios klasės mechanizmo, bet įveda bazinės klasės rodyklę į klasę, kurią iškviečia bazinė klasė, deklaruoja bazinės klasės analizės funkciją kaip virtualią funkciją ir iškviečia analizės funkciją per bazinės klasės rodyklę analizės procese, kad būtų taikomas polimorfizmas dinamiškai analizuoti ir saugoti duomenis, ir galiausiai užtikrina, kad tiek bazinės klasės objekto, tiek išvestinio klasės objekto, gauto iš bazinės klasės, duomenys gali būti saugomi bazinės klasės apibrėžtame rodyklėje.
Konkretūs veiksmai:
1 veiksmas: C++ kodas, kad sukurtumėte visas klases, kurios gali atitikti analizuojamo XML dokumento duomenų žymas, ir išanalizuokite XML duomenis po vieną iš aukščiausio lygio žymų.
2 veiksmas: kiekvienai išanalizuotai žymai nustatykite, ar yra kitų žymų, kurios paveldi žymą kaip pagrindinę klasę, t. y. ar žymos tipas išveda kitus žymų tipus;
Žingsnis 3: Jei nustatoma, kad dabartinė žyma nėra paveldima kaip pagrindinė klasė, išanalizuokite dabartinę žymą pagal įprastus analizės veiksmus.
4 žingsnis: Jei nustatoma, kad dabartinė žyma yra paveldima kaip bazinė klasė, toliau nustatykite, ar bazinės klasės žymos aprašytas turinys yra pavaldus bazinės klasės objektui, ar išvestiniam klasės objektui;
5 žingsnis: Jei dabartinės bazinės klasės žymos turinys apibūdinamas pagrindinės klasės objektui, išanalizuokite dabartinę žymą pagal įprastus veiksmus.
6 veiksmas: jei dabartinis pagrindinės klasės žymos turinys apibūdina išvestinės klasės objektą, pakeiskite kodą, kad jis būtų analizuojamas pagal naują analizės metodą: pakeiskite ankstesnio tipo, apibrėžiančio pagrindinės klasės objektą, duomenų struktūrą ir vietoj to apibrėžkite pagrindinės klasės žymeklį; Pakeiskite bazinės klasės analizės funkciją ir paskelbkite ją virtualia funkcija;
Žingsnis 7: Kai pagrindinės klasės objektas iš pradžių buvo apibrėžtas analizei, vietoj jo apibrėžiamas pagrindinės klasės žymeklis ir jam priskiriamas konkretus atminties tipas pagal etiketės turinio aprašytą tipą, o pagrindinės klasės žymeklis naudojamas analizės funkcijai iškviesti, kad būtų išanalizuota dabartinė etiketė.
8 veiksmas: išanalizuokite ir paleiskite dabartinę žymą, kad nustatytumėte, ar vis dar yra analizuojamų žymų;
Žingsnis 9: Jei nustatoma, kad nėra žymų, kurias reikia analizuoti, tai reiškia, kad analizė baigta ir duomenys išsaugoti klasėje su aukščiausia atitinkamo XML dokumento etikete C++ klasėje.
Žingsnis 10: Jei nustatoma, kad vis dar yra žymų, kurios nebuvo išspręstos, išanalizuokite kitą žymą pagal 2 veiksmą.

Pridedama struktūrinė schema

4. Santrauka

C++ pristato bazinės klasės žymeklį, skirtą priskirti atitinkamo tipo objektus XML žymos turiniui pagal tai, ar tai yra pagrindinė klasė, ar išvestinė klasė, ir naudoja apibrėžtą bazinės klasės žymeklį, kad iškviestų analizės funkciją, paskelbtą kaip įsivaizduojamą funkciją, kad išanalizuotų XML bazinės klasės žymos turinį. Tokiu būdu, kai XML bazinės klasės žyma apibūdina bazinės klasės objekto duomenis, bazinės klasės analizės funkcija bus dinamiškai iškviečiama pagal C++ polimorfizmą, o bazinės klasės žymos aprašyti bazinės klasės duomenys gali būti teisingai išanalizuoti ir išsaugoti. Kai XML bazinės klasės žyma apibūdina išvestinius klasės objekto duomenis, išvestinės klasės analizės funkcija bus dinamiškai iškviečiama pagal C++ polimorfizmą, o išvestiniai klasės duomenys, aprašyti bazinės klasės žyma, taip pat gali būti teisingai išanalizuoti ir išsaugoti.





Ankstesnis:QQ protokolo analizės pamoka, skirta Android / PC
Kitą:Demon Spirit Summon V4.1.8 naudojamas santūriai
Paskelbta 2019-01-16 09:26:40 |
Struktūrinės schemos nebėra
 Savininkas| Paskelbta 2019-01-16 09:31:49 |
Publikuota 2019-1-16 09:26
Struktūrinės schemos nebėra

Struktūrinė schema prideda, kad žinote
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com