Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 13040|Répondre: 2

[C++] Techniques pour que C++ dépose des données d’objets de classe dérivées lors de l’analyse de données de fichiers XML...

[Copié le lien]
Publié sur 16/01/2019 09:22:59 | | | |
Ce post a été modifié pour la dernière fois par Summer le 16-01-2019 à 09:31

1. Quel est le problème technique à résoudre dans cet article ?

Résoudre le problème de l’état de la technique selon lequel, lors de l’analyse de documents XML en langage C++, les balises de classe de base issues des données de classe dérivées qui apparaissent dans le document XML original ne peuvent analyser les données de classe de base que selon le type de classe de base selon la méthode d’analyse conventionnelle, mais ne peuvent pas analyser complètement les données de classe dérivées.


2. Contexte technique

Dans l’art antérieur, utilisez boost ::sérialisation pour transférer des classes dérivées avec un pointeur de classe de base ou utilisez BOOST_CLASS_EXPORT macro.

Les deux schémas ci-dessus dans les technologies existantes sont basés sur le mécanisme des classes abstraites, mais comme les classes abstraites ne peuvent pas être instanciées comme des objets concrets pouvant être utilisés, les objets déclarés comme classes de base dans les documents XML ne peuvent pas être analysés. La présente invention vise à garantir que les données de l’objet de classe de base lui-même et de l’objet de classe dérivé marqué par l’objet de classe de base puissent être correctement analysées et entièrement préservées.


3. Le schéma technique présenté dans cet article

Cet article n’utilise pas le mécanisme des classes abstraites, mais introduit le pointeur de classe de base dans la classe appelée par la classe de base, déclare la fonction d’analyse de la classe de base comme une fonction virtuelle, et appelle la fonction d’analyse via le pointeur de classe de base dans le processus d’analyse, afin d’appliquer un polymorphisme pour analyser et stocker dynamiquement les données, et enfin s’assure que les données de l’objet de classe de base et de l’objet de classe dérivé dérivé de la classe de base puissent être stockées dans le pointeur défini par la classe de base.
Étapes spécifiques :
Étape 1 : Code C++ pour concevoir toutes les classes pouvant correspondre aux balises de données dans le document XML à analyser, et analyser les données XML une par une à partir des balises de premier niveau.
Étape 2 : Pour chaque balise analysée, déterminer s’il existe d’autres balises qui héritent de la balise comme classe de base, c’est-à-dire si le type d’étiquette dérive d’autres types d’autres balises ;
Étape 3 : Si il est déterminé que l’etiquetage courant n’est pas hérité comme classe de base, analysez l’étiquette courante selon les étapes normales de l’analyse.
Étape 4 : S’il est déterminé que la balise courante est héritée comme une classe de base, on détermine également si le contenu décrit par la balise de la classe de base est subordonné à l’objet de classe de base ou à un objet de classe dérivé ;
Étape 5 : Si le contenu de l’etiquetage de classe de base actuelle est déterminé à décrire l’objet de classe de base, analysez l’étiquette actuelle selon les étapes normales.
Étape 6 : Si le contenu actuel de la balise de classe de base décrit l’objet de classe dérivé, modifiez le code pour qu’il analyse selon la nouvelle méthode d’analyse : modifier la structure de données du type précédent qui définit l’objet de classe de base et définir le pointeur de classe de base à la place ; Modifier la fonction d’analyse de la classe de base et la déclarer comme une fonction virtuelle ;
Étape 7 : Là où l’objet de la classe de base a été initialement défini pour l’analyse, le pointeur de la classe de base est défini à la place, et le type spécifique de mémoire lui est alloué selon le type décrit par le contenu de l’étiquette, et le pointeur de la classe de base est utilisé pour appeler la fonction d’analyse afin d’analyser l’étiquette courante.
Étape 8 : Analyser et jouer le tag actuel pour déterminer s’il reste encore des tags à analyser ;
Étape 9 : S’il est déterminé qu’il n’y a pas de balises à analyser, cela signifie que l’analyse a été terminée et que les données ont été sauvegardées dans la classe avec la plus haute étiquette du document XML correspondant dans la classe C++.
Étape 10 : Si l’on détermine qu’il reste des tags non résolus, analysez le tag suivant selon l’étape 2.

Organigramme joint

4. Résumé

C++ introduit un pointeur de classe de base pour assigner des objets du type correspondant au contenu de la balise XML selon qu’il s’agit d’une classe de base ou d’une classe dérivée, et utilise le pointeur de classe de base défini pour appeler une fonction d’analyse déclarée comme une fonction imaginaire afin d’analyser le contenu de la balise de la classe de base XML. Ainsi, lorsque la balise de classe de base XML décrit les données de l’objet de la classe de base, la fonction d’analyse de la classe de base sera appelée dynamiquement selon le polymorphisme de C++, et les données de la classe de base décrites par l’étiquette de la classe de base pourront être correctement analysées et préservées. Lorsque la balise de classe de base XML décrit les données d’objet de classe dérivées, la fonction d’analyse de classes dérivée sera appelée dynamiquement selon le polymorphisme de C++, et les données de classe dérivées décrites par l’étiquette de classe de base peuvent également être correctement analysées et préservées.





Précédent:Tutoriel d’analyse du protocole QQ pour Android/PC
Prochain:Invocation d’Esprits Démoniaques V4.1.8 est utilisée de manière discrète
Publié sur 16/01/2019 09:26:40 |
Le diagramme de flux a disparu
 Propriétaire| Publié sur 16/01/2019 09:31:49 |
Publié le 16-01-2019 à 09:26
Le diagramme de flux a disparu

Le diagramme de flux ajoute que vous savez
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com