use default parser

This commit is contained in:
jez_higgins 2002-09-02 10:36:21 +00:00
parent 09d0ca7c89
commit 377fd7ab97

View file

@ -11,38 +11,12 @@
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
SAX::basic_XMLReader<std::string>* parserFactory(std::string name)
{
#ifdef USE_EXPAT
if(name == "expat")
return new SAX::expat_wrapper<std::string>;
#endif
#ifdef USE_GARDEN
if(name == "garden")
return new SAX::Garden;
#endif
#ifdef USE_MSXML
if(name == "msxml")
return new SAX::msxml2_wrapper<std::string>;
#endif
#ifdef USE_LIBXML2
if(name == "libxml")
return new SAX::libxml2_wrapper<std::string>;
#endif
#ifdef USE_XERCES
if(name == "xerces")
return new SAX::xerces_wrapper<std::string>;
#endif
std::cout << "unknown parser -> " << name << std::endl;
exit(0);
}
//////////////////////////////////////////////// ////////////////////////////////////////////////
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
if(argc < 3) if(argc < 3)
{ {
std::cout << "Usage : " << argv[0] << " parser_name xmlfile ... " << std::endl; std::cout << "Usage : " << argv[0] << " xmlfile ... " << std::endl;
return 0; return 0;
} // if(argc == 0) } // if(argc == 0)
@ -52,29 +26,29 @@ int main(int argc, char* argv[])
for(int i = 2; i < argc; ++i) for(int i = 2; i < argc; ++i)
{ {
std::auto_ptr<SAX::basic_XMLReader<std::string> > parser(parserFactory(argv[1])); SAX::XMLReader<std::string> parser;
try try
{ {
parser->setFeature(fNames.external_general, true); parser.setFeature(fNames.external_general, true);
parser->setFeature(fNames.validation, true); parser.setFeature(fNames.validation, true);
parser->setFeature(fNames.namespaces, true); parser.setFeature(fNames.namespaces, true);
parser->setFeature(fNames.namespace_prefixes, true); parser.setFeature(fNames.namespace_prefixes, true);
} }
catch(SAX::SAXException& e) catch(SAX::SAXException& e)
{ {
std::cerr << e.what() << std::endl; std::cerr << e.what() << std::endl;
} }
parser->setContentHandler(myHandler); parser.setContentHandler(myHandler);
parser->setDTDHandler(myHandler); parser.setDTDHandler(myHandler);
parser->setErrorHandler(myHandler); parser.setErrorHandler(myHandler);
parser->setEntityResolver(myHandler); parser.setEntityResolver(myHandler);
try try
{ {
parser->setProperty(pNames.declHandler, static_cast<SAX::DeclHandler&>(myHandler)); parser.setProperty(pNames.declHandler, static_cast<SAX::DeclHandler&>(myHandler));
parser->setProperty(pNames.lexicalHandler, static_cast<SAX::LexicalHandler&>(myHandler)); parser.setProperty(pNames.lexicalHandler, static_cast<SAX::LexicalHandler&>(myHandler));
} }
catch(SAX::SAXException& e) catch(SAX::SAXException& e)
{ {
@ -84,14 +58,17 @@ int main(int argc, char* argv[])
std::string file(argv[i]); std::string file(argv[i]);
if(file != "-") if(file != "-")
parser->parse(file); {
SAX::InputSource is(file);
parser.parse(is);
}
else else
{ {
SAX::InputSource is; SAX::InputSource is;
is.setSystemId("stdin"); is.setSystemId("stdin");
is.setByteStream(std::cin); is.setByteStream(std::cin);
parser->parse(is); parser.parse(is);
} // } //
} }