12 class MyVisitor : public XMLVisitor
15 virtual void startXML () {
16 cout << "Start XML" << endl;
18 virtual void endXML () {
19 cout << "End XML" << endl;
21 virtual void startElement (const char * name, const XMLAttributes &atts) {
22 cout << "Start element " << name << endl;
23 for (int i = 0; i < atts.size(); i++)
24 cout << " " << atts.getName(i) << '=' << atts.getValue(i) << endl;
26 virtual void endElement (const char * name) {
27 cout << "End element " << name << endl;
29 virtual void data (const char * s, int len) {
30 cout << "Character data " << string(s,len) << endl;
32 virtual void pi (const char * target, const char * data) {
33 cout << "Processing instruction " << target << ' ' << data << endl;
35 virtual void warning (const char * message, int line, int column) {
36 cout << "Warning: " << message << " (" << line << ',' << column << ')'
39 virtual void error (const char * message, int line, int column) {
40 cout << "Error: " << message << " (" << line << ',' << column << ')'
45 main (int ac, const char ** av)
49 for (int i = 1; i < ac; i++) {
50 ifstream input(av[i]);
51 cout << "Reading " << av[i] << endl;
52 if (!readXML(input, visitor)) {
53 cerr << "Error reading from " << av[i] << endl;