Created 星期六 01 五月 2010
simpleedit中的xerces
函数
bool get_tags(vector<taggroup>* target,const char * filename)
xerces初使化
XMLPlatformUtils::Initialize()
结束
XMLPlatformUtils::Terminate()
XML分析
SAXParse
事件处理
class tagsHandler:public HandlerBase
被使用 virtual void setDocumentHandler (DocumentHandler *const handler)
它的成员中使用了
void startElement(const XMLCh*const name,AttributeList &attributes);
void characters(const XMLCh* const chars,const unsigned int);
void endElement(const XMLCh* const name);
void characters(const XMLCh* const chars,const unsigned int);
void endElement(const XMLCh* const name);
获取属性值 virtual const XMLCh* AttributeList::getValue ( const XMLCh *const name )
开始分析
XMLPScanToken token;
if(!parser->parseFirst(filename,token))
{
cerr<<"scanFirst() failed]n"<<endl;
XMLPlatformUtils::Terminate();
return -1;
}
bool on=true;
while(on&&!parser->getErrorCount())
on=parser->parseNext(token);
parser->parseReset(token);
{
cerr<<"scanFirst() failed]n"<<endl;
XMLPlatformUtils::Terminate();
return -1;
}
bool on=true;
while(on&&!parser->getErrorCount())
on=parser->parseNext(token);
parser->parseReset(token);
异常
XMLException
编绎
目前的linux
include文件在/usr/include/xercesc下,库/usr/lib下链接到-lxerces-c
析构函数
如果让系统自动调用析构函数,会在XMLPlatformUtils::Terminate()后,这样会产生异常,所以一般用new,delete.
void SAXParser::parse ( const char *const systemId )
一次parse
源为字符串
SAXParser::parse的源
类型 MemBufInputSource
使用了字符串
SAXParser的特征
void setDoNamespace(const bool)
void setDoValidation(const bool) 报告错误
void setDoSchema(const bool) 支持schema
void setValidationSchemaFullChecking(const bool)
void setValidationScheme(const ValSchemes)
SAXParser::Val_Auto只有指定了语法规则(grammar)时才检验
SAXParser::Val_Always总是
SAXParser::Val_Nerver不报告错误,这是默认值
SAXParser::Val_Always总是
SAXParser::Val_Nerver不报告错误,这是默认值
DOM
1 使用头文件<xercesc/dom/DOM.hpp>
2 使用指针访问Nodes的操作
3 使用release(),如果一个DOMDocument被释放,则其子节点也会被释放。