ReaderExample.cpp
Go to the documentation of this file.
1 // Example
2 #include "ReaderExample.h"
3 
4 // TerraLib
5 #include <terralib/xml.h>
6 
7 // STL
8 #include <iostream>
9 #include <memory>
10 
12 {
13  switch(type)
14  {
15  case te::xml::UNKNOWN:
16  std::cout << "UNKNOWN";
17  break;
18 
20  std::cout << "START_DOCUMENT";
21  break;
22 
24  std::cout << "END_DOCUMENT";
25  break;
26 
28  std::cout << "START_ELEMENT";
29  break;
30 
32  std::cout << "END_ELEMENT";
33  break;
34 
35  case te::xml::VALUE:
36  std::cout << "VALUE";
37  break;
38 
39  case te::xml::CDATA:
40  std::cout << "CDATA";
41  break;
42 
44  std::cout << "IGNORABLE_WHITESPACE";
45  break;
46 
48  std::cout << "WHITESPACE";
49  break;
50 
52  std::cout << "PROCESSING_INSTRUCTION";
53  break;
54 
56  std::cout << "START_PREFIX_MAPPING";
57  break;
58 
60  std::cout << "END_PREFIX_MAPPING";
61  break;
62 
64  std::cout << "SKIPPED_ENTITY";
65  break;
66  }
67  std::cout << std::endl;
68 }
69 
70 void ReadXML(const std::string& path, bool validSchema, bool ignoreWhiteSpaces)
71 {
72  try
73  {
74  std::unique_ptr<te::xml::Reader> reader(te::xml::ReaderFactory::make("XERCES"));
75  reader->setValidationScheme(validSchema);
76  reader->setIgnoreWhiteSpaces(ignoreWhiteSpaces);
77 
78  reader->read(path);
79 
80  std::cout << ":: File information: " << path;
81  std::cout << std::endl;
82 
83  while(reader->next())
84  {
85  std::cout << "Element Name: " << reader->getElementLocalName() << " -> ";
86  std::cout << "Node Type: "; NodeTypePrinter(reader->getNodeType());
87 
88  if(reader->getNodeType() == te::xml::START_ELEMENT && reader->hasAttrs())
89  {
90  std::cout << " Attributes" << std::endl;
91  for(std::size_t i = 0; i < reader->getNumberOfAttrs(); ++i)
92  std::cout << " * [" << reader->getAttrLocalName(i) << " = " << reader->getAttr(i) << "]" << std::endl;
93  }
94 
95  if(reader->getNodeType() == te::xml::VALUE)
96  std::cout << " * Element value: " << reader->getElementValue() << std::endl;
97  }
98  std::cout << std::endl;
99  }
100  catch(const std::exception& e)
101  {
102  std::cout << std::endl << "An exception has occurred: " << e.what() << std::endl;
103  return;
104  }
105  catch(...)
106  {
107  std::cout << std::endl << "An unexpected exception has occurred!" << std::endl;
108  return;
109  }
110 }
static te::xml::Reader * make()
It creates a new XML reader using the dafault implementation.
void NodeTypePrinter(te::xml::NodeType type)
NodeType
The type of node read by XML reader.
This file contains include headers for TerraLib XML module.
void ReadXML(const std::string &path, bool validSchema, bool ignoreWhiteSpaces)