300 {
301
302 const CoreParser::DOMNode&
node = core_node.get_node ();
303 const CoreParser::DOMNode* nptr = &
node;
304 const std::string& nodeName =
node.get_name();
305 const std::string& nodeValue =
node.get_value();
306 if (XMLCoreParserDebugger::debug ()){
307 std::cout << "XMLCoreParser::visit node(" << nptr << ") " << nodeName << std::endl;
308 }
310 if (XMLCoreParserDebugger::debug ()){
311 std::cout << "XMLCoreParser::visit factory " << factory << std::endl;
312 }
313
314 switch (
node.get_type()) {
317 for (const CoreParser::DOMNode* child : siblings) {
318 XMLCoreNode
n (child);
320 }
321 break;
322 }
324 if (XMLCoreParserDebugger::debug ()){
325 std::cout << "XMLCoreParser::visit ELEMENT_NODE "
326 << " factory=" << factory
327 << std::endl;
328 }
329 if (factory != 0){
330 factory->
start (*
this, core_node);
331 } else {
332 std::cerr << "XMLCoreParser> Cannot find factory for element "
333 << nodeName << std::endl;
335 }
337 for (const CoreParser::DOMNode* child : siblings) {
338 XMLCoreNode
n (child);
340 }
341 if (factory != 0) factory->
end (*
this, core_node);
342 break;
343 }
345 if (factory != 0) factory->
comment (*
this, nodeValue);
346 break;
347 }
349 std::cout << "ENTITY_NODE " << nodeValue << std::endl;
350 break;
351 }
353 std::cout << "ENTITY_REFERENCE_NODE " << nodeValue << std::endl;
354 break;
355 }
356 default: {
357 std::cerr <<
"Unrecognized node type = " << (long)
node.get_type() << std::endl;
358 break;
359 }
360 }
361 if (XMLCoreParserDebugger::debug ()){
362 std::cout << "XMLCoreParser::visit-2" << std::endl;
363 }
364}
void end(XMLCoreParser &parser, const XMLCoreNode &node)
void comment(XMLCoreParser &parser, const std::string &comment)
void start(XMLCoreParser &parser, const XMLCoreNode &node)
XMLCoreFactory * find_factory(const std::string &name)
std::vector< DOMNode * > DOMSiblings