Qt的XML模块包含了两种处理xml的API,分别是SAX和DOM。SAX提供了一种低层的基于事件驱动的方式解析xml文件,而DOM提供了一种高层的接口用于解析xml文件。不同之处在于DOM受制于内存的大小,一次不能解析文件大小太大的xml文件,因为它将xml文件一次性地读入内存中。
SAX方式解析XML文件
SAX方式解析XML是基于事件方式编程的。执行的流程完全取决于读入的数据。使用该方式的主要步骤是创建一个XML读取器以及一个处理器,然后将两者关联起来,之后调用parse(),涉及的各方用类图表示如下:
代码示例如下:
myhandler.h
- #ifndefMYHANDLER_H
- #defineMYHANDLER_H
- #include<QXmlDefaultHandler>
- classQString;
- classMyHandler:publicQXmlDefaultHandler
- {
- public:
- explicitMyHandler();
- signals:
- publicslots:
- boolstartDocument();
- boolstartElement(constQString&namespaceURI,
- constQString&localName,
- constQString&qName,153); background-color:inherit; font-weight:bold">constQXmlAttributes&atts);
- boolcharacters(constQString&text);
- boolendElement(constQString&qName);
- private:
- QStringindent;
- };
- #endif//MYHANDLER_H
myhandler.cpp
copy