网站建设技术要求标准,设计网站排行,android开发基础教程,百度竞价网站谁做QtXml模块提供了一个读写XML文件的流#xff0c;解析方法包含DOM和SAX,两者的区别是什么呢#xff1f;
DOM#xff08;Document Object Model#xff09;#xff1a;将XML文件保存为树的形式#xff0c;操作简单#xff0c;便于访问。
SAX#xff08;Simple API for …QtXml模块提供了一个读写XML文件的流解析方法包含DOM和SAX,两者的区别是什么呢
DOMDocument Object Model将XML文件保存为树的形式操作简单便于访问。
SAXSimple API for XML接近于底层速度较快但不便于访问。
如果要使用XML时.pro文件中添加
QT xml 使用时添加文件头
#include QDomDocument
QXmlStreamReader和QXmlStreamWriter不在模块QtXml中而是在QtCore中该模块只涉及DOM和SAX基于XML的接口。 解析方法
void ParseXML::parse(QString file_name)
{ if(file_name.isEmpty()) return; QFile file(file_name); if(!file.open(QFile::ReadOnly | QFile::Text)){ QMessageBox::information(NULL, QString(title), QString(open error!));return; } QDomDocument document; QString error; int row 0, column 0; if(!document.setContent(file, false, error, row, column)){ QMessageBox::information(NULL, QString(title), QString(parse file failed at line row and column) QString::number(row, 10) QString(,) QString::number(column, 10));return; } if(document.isNull()){ QMessageBox::information(NULL, QString(title), QString(document is null!));return; } QDomElement root document.documentElement(); //root_tag_name为personsQString root_tag_name root.tagName();if(root.hasAttribute(name)){//name为QtQString name root.attributeNode(name).value(); }//获取id1的节点QDomElement person root.firstChildElement(); if(person.isNull()) return; QString person_tag_name person.tagName();//id为1QString id person.attributeNode(id).value();//获取子节点数目为2QDomNodeList list root.childNodes();int count list.count();for(int i0; i{QDomNode dom_node list.item(i);QDomElement element dom_node.toElement();//获取id值等价QString id_1 element.attributeNode(id).value(); QString id_2 element.attribute(id);//获取子节点数目为4包括name、age、email、websiteQDomNodeList child_list element.childNodes();int child_count child_list.count();for(int j0; j{QDomNode child_dom_node child_list.item(j);QDomElement child_element child_dom_node.toElement();QString child_tag_name child_element.tagName();QString child__tag_value child_element.text();}}//按照name、age、email、website的顺序获取值QDomElement element person.firstChildElement(); while(!element.isNull()){ QString tag_name element.tagName();QString tag_value element.text();element element.nextSiblingElement(); }
}