qt下xml的sax的解析器同symbian下的CParser,都是基于事件驱动的。解析过程中自动调用的回调函数在QXmlDefaultHandler中。
使用步骤:
1。继承QXmlDefaultHandler(该类的实现是个观察器),并实现回调函数
startElement()
endElement()
characters()
fatalError()
................
需要注意:对与同一个characters可能会多次引起characters(),要获得完整的characters,需要在endElement()后将每次characters()事件中传出的characters连接起来。这同symbain中的回调函数OnContent()
2.用要解析的xml文件创建QXmlInputSource
QFile file("test.xml");
QXmlInputSource inputSource(&file);
3.创建QXmlSimpleReader对象,并设置其ContentHandler和ErrorHandler
QXmlSimpleReader reader;
reader.setContentHandler(Handler);
reader.setErrorHandler(Handler);
handler为类SaxHandler的对象,SaxHandler为步骤1中从QXmlDefaultHandler继承的类。
4.解析xml
reader.parser(inputSource);