[ Prev ] [ Index ] [ Next ]

Xerces

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);


	获取属性值
		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);

异常

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不报告错误,这是默认值

DOM


1 使用头文件<xercesc/dom/DOM.hpp>
2 使用指针访问Nodes的操作
3 使用release(),如果一个DOMDocument被释放,则其子节点也会被释放。