mirror of
https://github.com/jezhiggins/arabica
synced 2025-02-06 20:46:18 +01:00
factored out setParserFeatures
This commit is contained in:
parent
bcd9584ce1
commit
4cac62e1fa
1 changed files with 16 additions and 5 deletions
|
@ -35,6 +35,10 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
|
||||||
entityResolver_(0),
|
entityResolver_(0),
|
||||||
errorHandler_(0)
|
errorHandler_(0)
|
||||||
{
|
{
|
||||||
|
SAX::FeatureNames<stringT> fNames;
|
||||||
|
features_.insert(std::make_pair(fNames.namespaces, true));
|
||||||
|
features_.insert(std::make_pair(fNames.namespace_prefixes, true));
|
||||||
|
features_.insert(std::make_pair(fNames.validation, true));
|
||||||
} // Parser
|
} // Parser
|
||||||
|
|
||||||
void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; }
|
void setEntityResolver(EntityResolverT& resolver) { entityResolver_ = &resolver; }
|
||||||
|
@ -51,7 +55,6 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
|
||||||
|
|
||||||
bool parse(SAX::basic_InputSource<stringT>& source)
|
bool parse(SAX::basic_InputSource<stringT>& source)
|
||||||
{
|
{
|
||||||
SAX::FeatureNames<stringT> fNames;
|
|
||||||
SAX::PropertyNames<stringT> pNames;
|
SAX::PropertyNames<stringT> pNames;
|
||||||
|
|
||||||
DOM::DOMImplementation<stringT> di = SimpleDOM::DOMImplementation<stringT, string_adaptorT>::getDOMImplementation();
|
DOM::DOMImplementation<stringT> di = SimpleDOM::DOMImplementation<stringT, string_adaptorT>::getDOMImplementation();
|
||||||
|
@ -69,9 +72,7 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
|
||||||
setParserProperty<SAX::basic_LexicalHandler<stringT> >(parser, pNames.lexicalHandler);
|
setParserProperty<SAX::basic_LexicalHandler<stringT> >(parser, pNames.lexicalHandler);
|
||||||
setParserProperty<SAX::basic_DeclHandler<stringT> >(parser, pNames.declHandler);
|
setParserProperty<SAX::basic_DeclHandler<stringT> >(parser, pNames.declHandler);
|
||||||
|
|
||||||
parser.setFeature(fNames.namespaces, true);
|
setParserFeatures(parser);
|
||||||
parser.setFeature(fNames.namespace_prefixes, true);
|
|
||||||
//parser.setFeature(fNames.external_general, true);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -114,9 +115,13 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
|
||||||
DOM::Node<stringT> currentNode_;
|
DOM::Node<stringT> currentNode_;
|
||||||
DOM::Node<stringT> cachedCurrent_;
|
DOM::Node<stringT> cachedCurrent_;
|
||||||
|
|
||||||
|
typedef std::map<stringT, bool> Features;
|
||||||
|
Features features_;
|
||||||
|
|
||||||
bool inCDATA_;
|
bool inCDATA_;
|
||||||
int inEntity_;
|
int inEntity_;
|
||||||
string_adaptorT SA_;
|
string_adaptorT SA_;
|
||||||
|
|
||||||
std::map<stringT, EntityT*> declaredEntities_;
|
std::map<stringT, EntityT*> declaredEntities_;
|
||||||
|
|
||||||
EntityResolverT* entityResolver_;
|
EntityResolverT* entityResolver_;
|
||||||
|
@ -133,6 +138,12 @@ class Parser : private SAX::basic_DefaultHandler2<stringT>
|
||||||
catch(SAX::SAXException&) { }
|
catch(SAX::SAXException&) { }
|
||||||
} // setParserProperty
|
} // setParserProperty
|
||||||
|
|
||||||
|
void setParserFeatures(SAX_parser& parser) const
|
||||||
|
{
|
||||||
|
for(Features::const_iterator f = features_.begin(), e = features_.end(); f != e; ++f)
|
||||||
|
parser.setFeature(f->first, f->second);
|
||||||
|
} // setParserFeatures
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// ContentHandler
|
// ContentHandler
|
||||||
virtual void endDocument()
|
virtual void endDocument()
|
||||||
|
|
Loading…
Add table
Reference in a new issue