您当前的位置: 首页 >  qt

txwtech

暂无认证

  • 3浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT使用SAX读取xml高效-快速

txwtech 发布时间:2022-08-13 22:03:50 ,浏览量:3

 SAX(Simple API for XML) 如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取较大的文件 SAX只能读取,不能写入

my2.xml



    
        Qt
        shimi
    
    
        Linix
        txwtech
    

SAX类文件:

class_sax.cpp
#include "class_sax.h"
#include 
#include 
#include 


class_sax::class_sax()
{


    list = new QListWidget();
   // list->addItem("txwtec");
    list->show();

    //---------------------------
    //Signal Received
   // ---------------------------
    //

The inferior stopped because it received a signal from the operating system.

Signal name : ?Signal meaning : Unknown signal // --------------------------- // OK // --------------------------- } class_sax::~class_sax() { // list = new QListWidget; //delete list; } bool class_sax::ReadFile(const QString &fileName) { QFile file(fileName);// QXmlInputSource input_source(&file);//读取文件内容 QXmlSimpleReader reader;//建立QXmlSimpleReader对象 reader.setContentHandler(this);//设置内容处理器 reader.setErrorHandler(this);//设置错误处理器 return reader.parse(input_source);//解析文件 } //已经解析完一个元素的起始标签 bool class_sax::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) { if(qName=="书库") list->addItem(qName); else if(qName=="图书") list->addItem(" "+qName+atts.value("编号")); return true; } //已经解析完一块字符数据 bool class_sax::characters(const QString &ch) { currentText=ch; return true; } //已经解析完一个元素的结束标签 bool class_sax::endElement(const QString &namespaceURI, const QString &localName, const QString &qName) { if(qName=="书名"||qName=="作者") list->addItem(" "+qName+":"+currentText); return true; } //错误处理 bool class_sax::fatalError(const QXmlParseException &exception) { qDebug()

关注
打赏
1665060526
查看更多评论
0.1179s