XML 解析之SAX
来源:互联网 发布:阿里云 接收短信 编辑:程序博客网 时间:2024/05/22 13:44
代码出自Qt Creator 快速入门,这里只是做个记载
xml
<?xml version="1.0" encoding="UTF-8"?><library><book id="01"><title>Qt</title><author>shiming</author></book><book id="02"><title>linux</title><author>shiming</author></book></library>
mysax.h
#ifndef MYSAX_H#define MYSAX_H#include <QXmlDefaultHandler>class QListWidget;class MySAX : public QXmlDefaultHandler{public: MySAX(); ~MySAX(); bool readFile(const QString &fileName);protected: bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts); bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName); bool characters(const QString &ch); bool fatalError(const QXmlParseException &exception);private: QListWidget *list; QString currentText;};#endif // MYSAX_H
mysax.cpp
#include "mysax.h"#include <QtXml>#include <QListWidget>MySAX::MySAX(){ list = new QListWidget; list->show();}MySAX::~MySAX(){ delete list;}bool MySAX::readFile(const QString &fileName){ QFile file(fileName); // 读取文件内容 QXmlInputSource inputSource(&file); // 建立QXmlSimpleReader对象 QXmlSimpleReader reader; // 设置内容处理器 reader.setContentHandler(this); // 设置错误处理器 reader.setErrorHandler(this); // 解析文件 return reader.parse(inputSource);}// 已经解析完一个元素的起始标签bool MySAX::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts){ if (qName == "library") list->addItem(qName); else if (qName == "book") list->addItem(" " + qName + atts.value("id")); return true;}// 已经解析完一块字符数据bool MySAX::characters(const QString &ch){ currentText = ch; return true;}// 已经解析完一个元素的结束标签bool MySAX::endElement(const QString &namespaceURI, const QString &localName, const QString &qName){ if (qName == "title" || qName == "author") list->addItem(" " + qName + " : " + currentText); return true;}// 错误处理bool MySAX::fatalError(const QXmlParseException &exception){ qDebug() << exception.message(); return false;}
main.cpp
#include "mysax.h"#include <QApplication>int main(int argc, char* argv[]){ QApplication app(argc, argv); MySAX sax; sax.readFile("../mySAX/my.xml"); return app.exec();}
- 解析xml之--SAX
- 解析xml之--SAX
- 解析xml之--SAX
- XML解析之SAX
- XML 解析之SAX
- XML解析之SAX
- 【xml之SAX解析】
- XML解析之SAX
- 解析XML之SAX
- xml之SAX解析
- xml之sax解析
- xml解析之sax
- XML解析之SAX
- xml解析之SAX
- XML之sax解析
- XML解析之SAX
- xml之SAX解析
- Xml之Sax解析
- cocos2d-x 学习笔记—缓存中创建精灵
- ORACLE SQL:经典查询练习
- Transparent Application Failover (TAF)
- 解决通过PLSQL进行表查询,查询结果乱码
- 教你如何在Win7上关闭家庭组【绿色】
- XML 解析之SAX
- cocos2d-x之CCGUI设计与实现(1)序言
- 交换机CLI测试点
- hibernate 笔记
- 抽象工厂模式
- TIF 文件转换成PDF文件
- Android 多线程:使用Thread和Handler (从网络上获取图片)
- 模仿Toast自定义悬浮窗口
- [转载]SURF 与 SIFT的共同点与不同点