Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13040|Odpoveď: 2

[C++] Techniky pre C++ na vypisovanie odvodených údajov o objektoch triedy pri parsovaní XML súborov...

[Kopírovať odkaz]
Zverejnené 16. 1. 2019 9:22:59 | | | |
Tento príspevok naposledy upravila Summer 16. júna 2019 o 09:31

1. Aký je technický problém, ktorý treba v tomto článku vyriešiť?

Vyriešiť problém v predchádzajúcej technike, že pri parsovaní XML dokumentov v jazyku C++ môžu základné triedne tagy odvodené triedne dáta, ktoré sa objavujú v pôvodnom XML dokumente, parsovať iba základné triedne dáta podľa základného typu triedy podľa konvenčnej metódy parsovania, ale nemôžu úplne parsovať odvodené triedne dáta.


2. Technické pozadie

V predchádzajúcom stave techniky použite boost::serialization na prenos odvodených tried s ukazovateľom základnej triedy alebo použite BOOST_CLASS_EXPORT makro.

Obe vyššie uvedené schémy v existujúcich technológiách sú založené na mechanizme abstraktných tried, ale keďže abstraktné triedy nemožno inštancionovať ako konkrétne objekty, ktoré by sa dali použiť, objekty deklarované ako základné triedy v XML dokumentoch nie je možné analyzovať. Súčasný vynález má za cieľ zabezpečiť, aby údaje o základnom triednom objekte samotnom aj odvodenom triednom objekte označenom základným triednym objektom mohli byť správne spracované a úplne zachované.


3. Technická schéma uvedená v tomto článku

Tento článok nepoužíva mechanizmus abstraktných tried, ale zavádza ukazovateľ základnej triedy do triedy volanej základnou triedou, deklaruje funkciu parsovania základnej triedy ako virtuálnu funkciu a volá túto funkciu cez ukazovateľ základnej triedy v procese parsovania, aby sa aplikoval polymorfizmus na dynamické spracovanie a ukladanie dát, a nakoniec zabezpečuje, že dáta objektu základnej triedy aj odvodeného objektu triedy odvodeného zo základnej triedy môžu byť uložené v ukazovateľi definovanom základnou triedou.
Konkrétne kroky:
Krok 1: C++ kód na navrhnutie všetkých tried, ktoré môžu zodpovedať dátovým značkám v XML dokumente, ktorý sa má parsovať, a analyzovanie XML dát jednu po druhej z najvyšších tagov.
Krok 2: Pre každý parsovaný tag určte, či existujú iné tagy, ktoré dedili tag ako základnú triedu, teda či typ tagu odvodzuje iné typy tagov;
Krok 3: Ak sa zistí, že aktuálny tag nie je zdedený ako základná trieda, parsujte aktuálny tag podľa bežných krokov parsovania.
Krok 4: Ak sa zistí, že aktuálny tag je zdedený ako základná trieda, ďalej určiť, či obsah popísaný tagom základnej triedy je podriadený objektu základnej triedy alebo odvodenému triednemu objektu;
Krok 5: Ak je obsah aktuálneho tagu základnej triedy určený na popis objektu základnej triedy, parsujte aktuálny tag podľa bežných krokov.
Krok 6: Ak aktuálny obsah tagu základnej triedy popisuje odvodený objekt triedy, upravte kód tak, aby sa parsoval podľa novej metódy parsovania: upravte dátovú štruktúru predchádzajúceho typu, ktorý definuje objekt základnej triedy, a namiesto toho definujte ukazovateľ základnej triedy; Modifikujte základnú triedu parsovaciu funkciu a deklarujte ju ako virtuálnu funkciu;
Krok 7: Ak bol objekt základnej triedy pôvodne definovaný na parsovanie, namiesto toho sa definuje ukazovateľ základnej triedy a konkrétny typ pamäte sa mu pridelí podľa typu popísaného obsahom štítku, pričom ukazovateľ základnej triedy sa použije na volanie funkcie na parsovanie aktuálneho štítku.
Krok 8: Parsujte a zahrajte aktuálny tag, aby ste zistili, či sú ešte tagy na parsovanie;
Krok 9: Ak sa zistí, že nie sú žiadne značky na parsovanie, znamená to, že parsovanie bolo dokončené a dáta boli uložené do triedy s najvyšším štítkom príslušného XML dokumentu v triede C++.
Krok 10: Ak sa zistí, že stále existujú značky, ktoré neboli vyriešené, parsujte ďalší tag podľa kroku 2.

Priložený diagram toku

4. Zhrnutie

C++ zavádza ukazovateľ základnej triedy na priraďovanie objektov zodpovedajúceho typu obsahu XML tagu podľa toho, či ide o základnú triedu alebo odvodenú triedu, a používa definovaný ukazovateľ základnej triedy na volanie parsovacej funkcie deklarovanej ako imaginárna funkcia na spracovanie obsahu tagu základnej triedy XML. Týmto spôsobom, keď tag základnej triedy XML popisuje dáta objektu základnej triedy, funkcia parsovania základnej triedy bude dynamicky volaná podľa polymorfizmu C++ a dáta základnej triedy popísané tagom základnej triedy môžu byť správne parsované a zachované. Keď značka XML základnej triedy popisuje odvodené dáta objektu triedy, odvodená funkcia na analýzu tried bude dynamicky volaná podľa polymorfizmu C++ a odvodené dáta triedy popísané základným triednym tagom môžu byť tiež správne parsované a zachované.





Predchádzajúci:Návod na analýzu QQ protokolu pre Android/PC
Budúci:Demon Spirit Summon V4.1.8 sa používa nenápadne
Zverejnené 16. 1. 2019 9:26:40 |
Diagram je preč
 Prenajímateľ| Zverejnené 16. 1. 2019 9:31:49 |

Diagram pridáva, viete
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com