ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
sa2xml.h
1 //===========================================================================
2 #ifndef comfrm_SA2XMLH
3 #define comfrm_SA2XMLH
4 //===========================================================================
5 // Заготовка модуля SA2XML была сгенерирована CASE средством разработки SA2-DE.
6 // Все права защищены. (2011)
7 //
8 // В данном файле представлен исходный текст основного заголовочного файла модуля.
9 //
10 // ======================================= //
11 // Параметры новой разработки.
12 // ======================================= //
13 // Имя комплекса: CommonTools (com)
14 // Имя решения: FileTools (fil) (прочерк если модуль относится лишь к комплексу)
15 // Имя проекта: StandartDir (sdr) (прочерк если модуль относится лишь к решению)
16 // Полный SID: comfilsdr
17 // Время создания: 13:37:49
18 // Дата создания: 22.03.2011
19 // ======================================= //
20 // ============================================================================================ //
21 // Параметры ревизии(версии):
22 // ============================================================================================ //
23 // [prd]Period: 3/2011
24 // [aut]Author: Александр Соколов
25 // [did]DeveloperID: sa
26 // [pid]ProblemID: 00001
27 // [rvs = did.date.pid]Revision: //#sa.22.03.2011.00001
28 // [dsc]Description: Некоторые вспомогательные шаблонные функции чтения XML
29 // [ccm]CodeComment: rvs.{[s]Start | [e]End | []}{[n]New | [o]Old | [d]Develop}
30 // ============================================================================================ //
38 //========================================================================
39 // ДОПОЛНИТЕЛЬНЫЕ ПОДКЛЮЧЕНИЯ (Типы и модули, необходимые для .h - файла)
40 //------------------------------------------------------------------------
41 #include <string>
42 #include <iostream>
43 
44 #include <xercesc/sax2/SAX2XMLReader.hpp>
45 #include <xercesc/sax2/XMLReaderFactory.hpp>
46 #include <xercesc/util/XMLString.hpp>
47 //========================================================================
48 //========================================================================
49 namespace com
50 {
51  namespace xml
52  {
59  template<class UserParser, class OutputStructure>
60  int loadXercesXmlData(const std::string& p_xml_file, OutputStructure& o_xml_data)
61  {
62  int res = 0;
63 
65  // Инициализация парсера Xerces
66  try {
67  xercesc::XMLPlatformUtils::Initialize();
68  }
69  catch (const xercesc::XMLException& toCatch) {
70  // Do your failure processing here
71  return 1;
72  }
73 
75  xercesc::SAX2XMLReader* parser = xercesc::XMLReaderFactory::createXMLReader();
76 
78  parser->setFeature(xercesc::XMLUni::fgSAX2CoreValidation, true);
79 
81  UserParser* handler = new UserParser( o_xml_data );
82 
84  parser->setContentHandler(handler);
85  parser->setErrorHandler(handler);
86 
88  try
89  {
91  parser->parse( p_xml_file.c_str() );
93  }
94  catch (const xercesc::XMLException& toCatch)
95  {
96  char* message = xercesc::XMLString::transcode(toCatch.getMessage());
97  std::cerr << "Возникло исключение: \n" << message << std::ends;
98  xercesc::XMLString::release(&message);
99  res = 17;
100  }
101  catch (...)
102  {
103  res = 15;
104  }
105 
106  delete parser;
107  delete handler;
108 
109  // ДЕинициализация парсера Xerces
110  xercesc::XMLPlatformUtils::Terminate();
111 
112  if (res != 0)
113  std::clog << "load_xerces_xml_data: XML данные НЕ загружены!\n";
114 
115  return res;
116  }
117  }
118 }
119 
121 //===========================================================================
122 #endif
123 //===========================================================================