Lire et écrire des documents XML (C++)
Après avoir généré du code depuis le schéma d’exemple, une application C++ test est créée, avec plusieurs bibliothèques Altova de support.
À propos des bibliothèques C++ générées
La classe centrale du code généré est la classe CDoc qui représente le document XML. Une telle classe est générée pour tous les schémas et son nom dépend du nom de fichier de schéma. Comme indiqué dans le diagramme, cette classe fournit des méthodes pour charger les documents depuis des fichiers, des streams binaires ou des strings (ou pour enregistrer des documents dans des fichiers, des streams, des strings). Pour consulter une liste de tous les membres exposés par cette classe, voir la référence de classe ( [YourSchema]::[CDoc] ).
Le champ Library de la classe CDoc représente la racine réelle du document. Library est un élément dans le fichier XML, donc dans le code C++ il a une classe de modèle en tant que type (MemberElement). Le modèle de classe expose des méthodes et des propriétés pour interagir avec l’élément Library . En général, chaque attribut et chaque élément d’un type dans le schéma est saisi dans le code généré avec les classes de modèle MemberAttribute et MemberElement, respectivement. Pour plus d'informations, voir la référence de classe [YourSchema]::MemberAttribute et [YourSchema]::MemberElement .
La classe CLibraryType est générée depuis le type complexe LibraryType dans le schéma. Veuillez noter que la classe CLibraryType contient deux champs : Book et LastUpdated. Conformément à la logique déjà mentionnée ci-dessus, ces champs correspondent à l’élément Book et à l’attribut LastUpdated dans le schéma, et vous permettent de manipuler par le biais d’un programme (apposer, supprimer, etc.) des éléments et des attributs dans le document d’instance XML.
Puisque le DictionaryType est un type complexe dérivé depuis BookType dans le schéma, cette relation se retrouve aussi dans les classes générées. Comme illustré dans le diagramme, la classe CDictionaryType hérite la classe CBookType.
Si votre schéma XML définit des types simples en tant qu’énumérations, les valeurs énumérées deviennent disponibles en tant que valeurs enum dans le code généré. Dans le schéma utilisé dans ces exemple, un format de livre peut être hardcover, paperback, e-book, etc. Dans le code généré, ces valeurs peuvent donc être disponibles via un enum membre de la classe CBookFormatType.
Écrire un document XML
1.Ouvrir la solution LibraryTest.sln dans Visual Studio générée depuis le schéma Library mentionné plus tôt dans cet exemple.
Tout en prototypant une application depuis un schéma XML changeant fréquemment, vous devrez éventuellement générer fréquemment du code dans le même répertoire, de manière à ce que les changements de schéma sont réfléchis immédiatement dans le code. Veuillez noter que l’application de test généré et les bibliothèques Altova sont écrasées à chaque fois que vous générez du code dans le même répertoire cible. C’est pourquoi il ne faut pas ajouter du code à l’application de test généré. Au lieu de cela, veuillez intégrer les bibliothèques dans votre projet (voir Intégrer des Bibliothèques Schema Wrapper). |
2.Dans Solution Explorer, ouvrir le fichier LibraryTest.cpp, et éditer la méthode Example() comme indiqué ci-dessous.
#include <ctime> // required to get current time |
3.Appuyer sur F5 pour lancer le débogage. Si le code a été exécuté avec succès, un fichier GeneratedLibrary.xml est créé dans le répertoire de sortie de solution.
Lire un document XML
1.Ouvrir la solution LibraryTest.sln dans Visual Studio.
2.Enregistrer le code ci-dessous en tant que Library1.xml dans un répertoire qui peut être lu par le code de programme (par exemple, le même répertoire que LibraryTest.sln).
<?xml version="1.0" encoding="utf-8"?> |
3.Dans Solution Explorer, ouvrir le fichier LibraryTest.cpp, et éditer la méthode Example() comme indiqué ci-dessous.
using namespace Doc; |
4.Press F5 to start debugging.