1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/parsers/AbstractDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/framework/StdOutFormatTarget.hpp>
#include <xercesc/framework/LocalFileFormatTarget.hpp>
#include <string>
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <iostream>
#include <sstream>
#include "ErrReporter.hpp"
XERCES_CPP_NAMESPACE_USE
using namespace std;
int main(int argc, char **argv) {
string fichier="fichier3.xml";
// Initialisation du parser
try {
XMLPlatformUtils::Initialize();
}
catch (const XMLException& err) {
cerr << "Erreur pendant l'initialisation de Xerces-C++ :\n"
<< XMLString::transcode(err.getMessage())
<< endl;
return 2;
}
// Faire en sorte que le parser DOM renvoie tous les codes d'erreurs
//AbstractDOMParser::ValSchemes valScheme = AbstractDOMParser::Val_Auto;
// Instancie le parser DOM
XercesDOMParser *parser = new XercesDOMParser;
// Instancie un ErrorHandler et le lie au parser
ErrReporter *errHandler = new ErrReporter();
parser->setErrorHandler(errHandler);
DOMDocument *doc=0;
// Parse le fichier XML et récupère le temps mis pour le parsing
try {
parser->resetDocumentPool();
parser->parse(fichier.c_str());
parser->setDoNamespaces(true);
doc = parser->getDocument();
}
// Gestion des exceptions possibles pendant le parsing
// Exception XML
catch (const XMLException& err) {
cerr << "Erreur XML pendant le parsing du fichier : " <<fichier << "\n"
<< "Exception XML : \n"
<< XMLString::transcode(err.getMessage()) << "\n" << endl;
}
// Exception DOM
catch (const DOMException& err) {
cerr << "Erreur DOM pendant le parsing du fichier : " << fichier << "\n"
<< "Code d'erreur DOM : " << err.code << "\n" << endl;
cerr << "Exception DOM : " << "\n" << endl;
}
// Autre exception
catch (...) {
cerr << "Erreur inattendue durant le parsing du fichier : "
<< fichier << "\n" << endl;
}
if(doc && !errHandler->fSawErrors) {
// Affiche les éléments du fichier XML
DOMElement *repertoire = parser->getDocument()->getDocumentElement();
DOMNode *personne ;
DOMNode *aux=repertoire;
cout << XMLString::transcode(aux->getNodeName()) << "\n" ;
personne=aux;
if (personne == NULL )
{
cout <<"NULL";
}
else
{
cout <<"NOT NULL \n";
DOMElement* nom =(DOMElement*) personne->getFirstChild();
if (nom ==NULL)
{
cout <<"nom NULL ";
}
else
cout << XMLString::transcode(nom->getNodeName()) << "\n" ;
//meme le NodeName me donne #text , je sais pas koi faire
}
}
} |
Partager