XML 解析之SAX
发布时间:2020-12-16 05:23:45 所属栏目:百科 来源:网络整理
导读:代码出自Qt Creator 快速入门,这里只是做个记载 xml ?xml version="1.0" encoding="UTF-8"?librarybook id="01"titleQt/titleauthorshiming/author/bookbook id="02"titlelinux/titleauthorshiming/author/book/library mysax.h #ifndef MYSAX_H#define MYS
代码出自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 &qName); bool characters(const QString &ch); bool fatalError(const QXmlParseException &exception); private: QListWidget *list; QString currentText; }; #endif // MYSAX_H
#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 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 &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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |