QT XML

QT的XML模块支持流行的两种XML解析方法,DOM和SAX。DOM方法将XML文件表示成一棵树,便于随机访问其中的节点,但消耗的内存相对多一些。在QT中,XML文档自身使用QDomDocument表示,所有的节点类都从QDomNode继承。读取XML文档案例:

QDomDcument doc("test");

QFile file("test.xml");

if( (!file.open(QIODevice::ReadOnly))

     return;

if(!doc.setContent(&file))//它从QFile对象中读取XML数据并检测XML文档的编码

{

file.close();

return;

}

file.close();

读取XML文件第一层的所有元素并显示。

QDomElement docElem = doc.documentElement();

QDomNode n = docElem.firstChile();

while(!n.isNull())

{

QDomElement e=n.toElement();

if(!e.isNull)

{

qDebug()<<e.tagName();

}

n = n.nextSibling();

}

创建XML文件必须要先使用QFile创建实在的文件,再通过QTextStream和QDomDocument类关联,这样才可使用QDocument的save()方法来保存DOM树的内容。


SAX(Simple API for XML)是一种事件驱动的XML API,速度快,但不能便于随机访问任意节点。QT4.3中还引入了一种基于流的XML解析方法。

SAX2是一种“推进模型”分析器。程序员提供处理程序,在发生特定事件时(如:一个文档,或一个元素的开始和结束),分析器便调用这些事件的处理程序。SAX2分析器生民这些事件,包括在XML文档内容中发生的事件,在DTD中发生的事件和错误事件。应用程序只需要为感兴趣的事件实现处理程序。如果没有为特定类型的事件实现处理程序,那么该事件将被忽略。

建立一个SAX分析程序的过程是:

1、创建SAXXML.Reader实例;

2、设置处理程序类;

3、设置XML文档的来源;

4、开始分析;


基于流的XML API

QT4.3中引入了QXmlStreamReader和QXmlStreamWriter类。QXmlStreamReader提供了一种快速简单的XML流API,它可以从QIODevice或QByteArray读取XML数据。使用QXmlStreamReader处理XML比使用QT的SAX XML处理器更为自,不需要像SAX程序一样记录大量状态。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值