Qt XML文件解析 QDomDocument

这篇具有很好参考价值的文章主要介绍了Qt XML文件解析 QDomDocument。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢?

DOM(Document Object Model):将XML文件保存为树的形式,操作简单,便于访问。

SAX(Simple API for XML):接近于底层,速度较快,但不便于访问。

如果要使用XML时,.pro文件中添加:

QT += xml

 使用时添加文件头:

#include <QDomDocument>

QXmlStreamReader和QXmlStreamWriter不在模块QtXml中,而是在QtCore中,该模块只涉及DOM和SAX基于XML的接口。

Qt XML文件解析 QDomDocument,Qt,xml,前端,javascript

解析方法:
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为persons
    QString root_tag_name = root.tagName();
   if(root.hasAttribute("name"))
    {
       //name为Qt
       QString name = root.attributeNode("name").value(); 
    }
      
    //获取id="1"的节点
    QDomElement person = root.firstChildElement();  
   if(person.isNull()) 
       return; 

    QString person_tag_name = person.tagName();

    //id为1
    QString id = person.attributeNode("id").value();

    //获取子节点,数目为2
    QDomNodeList list = root.childNodes();
    int count = list.count();
    for(int i=0; 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、website
       QDomNodeList child_list = element.childNodes();
       int child_count = child_list.count();
       for(int j=0; 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();  
    }  
}  

 文章来源地址https://www.toymoban.com/news/detail-683126.html

到了这里,关于Qt XML文件解析 QDomDocument的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Qt xml解析之QXmlStreamReader

    Qt xml解析之QXmlStreamReader

    项目中遇到需要解析某个方法返回的xml字符串,奈何C/C++中没有原生的方法可供调用,只能使用第三方库,搜了一圈资料发现都不好用。刚好项目中用的Qt,瞬间想到了Qt中提供的各种各样的函数,去仔细查了一下Qt中提供的函数——QXmlStreamReader,真救命稻草,几行代码就搞定

    2024年02月10日
    浏览(13)
  • C++QT开发——Xml、Json解析

    可扩展标记语言,标准通用标记语言(Extensible Markup Language)的子集,简称XML,是一种定义电子文档结构和描述其内容的国际标准语言,被设计用来传输和存储数据。 可扩展标记语言与Access],Oracle]和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:

    2024年02月06日
    浏览(9)
  • qt读写xml文件

    qt读写xml文件

    Qt使用XML模块,在.pro文件中添加 QT += xml Qt 提供了三种读 写  XML 文档的方法: QXmlStreamReader / QXmlStreamWriter: 一种快速的基于流的方式访问良格式 XML 文档 , 特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一

    2024年02月11日
    浏览(12)
  • qt xml文件写入读取

    ****************************************************************************** QT       += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {    

    2024年02月09日
    浏览(13)
  • 利用Qt输出XML文件

    利用Qt输出XML文件

    使用Qt输出xml文件 写入生成的xml文件如下:

    2024年02月02日
    浏览(12)
  • Qt XML文件读、写、修改

    1.1 使用的库 1.2 主体语句 头部创建: 内容创建: 1.3 详细例子说明 .cpp文件

    2024年02月11日
    浏览(13)
  • Mapper.xml文件解析

     最近在做一个分布式项目,看到xml文件原先只是上网CV,还是要搞清楚吧! 下面是一个Mybatis的SQL映射文件的配置 这个元素定义了命名空间,用于标识这个映射文件对应的接口。在这里,命名空间指向了 cn.itedus.lottery.infrastructure.dao.IActivityDao 这个接口,表示这个映射文件用

    2024年02月10日
    浏览(26)
  • java解析xml文件

    MyContentHandler类继承自DefaultHandler,是一个自定义的内容处理器。在该类中重写了startElement()、endElement()和characters()方法,以处理XML解析的不同事件。

    2024年02月13日
    浏览(14)
  • 解析XML文件

    什么是XML? xml指可扩展语言(extendsible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 xml被设计用来传输和存储数据。 xml是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。 它也是元标记语言,

    2024年02月06日
    浏览(6)
  • Java中解析XML文件

    Java中解析XML文件

            XML(EXtensible Markup Language),可扩展标记语言,相比于HTML可以自定义标签,不遵循W3C标准         XML特点:跨平台、跨语言、跨系统。XML与操作系统、编程语言的开发平台无关。         XML作用:①数据交互②使用XML文件配置应用程序和网站 1.文档声明 包括文档

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包