-
Notifications
You must be signed in to change notification settings - Fork 0
/
CommonXml.cpp
61 lines (51 loc) · 1.57 KB
/
CommonXml.cpp
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
#include "CommonXml.h"
#include <iostream>
#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/util/XMLString.hpp>
using namespace std;
int FillDictionary(const char * xmlFile, DictionaryParse * Handler)
{
try {
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Error during initialization! :\n"
<< message << "\n";
XMLString::release(&message);
return 1;
}
// const char* xmlFile = "JMdict_e";
SAXParser* parser = new SAXParser();
// parser->setDoValidation(true);
// parser->setDoNamespaces(true); // optional
DocumentHandler* docHandler = Handler;
ErrorHandler* errHandler = (ErrorHandler*)Handler;
parser->setDocumentHandler(docHandler);
parser->setErrorHandler(errHandler);
int err = 0;
try {
parser->parse(xmlFile);
}
catch (const XMLException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
err = 1;
}
catch (const SAXParseException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
err = 2;
}
catch (...) {
cout << "Unexpected Exception \n" ;
err = 3;
}
delete parser;
return err;
}