38初识xml

XML(可扩展标记语言)是一种用于记录多种数据类型的标记语言。使用XML可以将各类型的文档定义为容易读取的格式,便于用户读取。而且,在应用程序中使用XML,可以轻松实现数据交换。

QT中提供两种访问XML文档的方式:DOM和SAX。

DOM方式:将XML文档转换为树形结果存储到内存中,再进行读取,消耗的内存比较多。此外,由于文档都已经存储到内存,所以需要频繁实现修改等操作时,使用起来比较方便。

SAX方式:相比于DOM,SAX是一种速度更快,更有效的方法,它逐行扫描文档,一边扫描一边解析(由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档的解析是一个巨大优势。)而且相比于DOM,SAX可以在解析文档的任意时刻停止解析。但操作复杂,很难修改XML数据。

 

本例只介绍DOM

QT为DOM提供了用于操作XML的多种C++类,均以QDOM开头:

类        描述

QDomAttr, 表示一个QdomElement的属性              

QDomCharacterData, 表示DOM中的一个通用字符串

QDomDocument,     表示XML文档

DomDocumentFragment,      QDomNodes树,通常不是一个完整地QDomDocument

QDomDocumentType,   表示文档树中的DTD

QDomElement,  表示DOM树中的一个元素

QDomEntity,           代表一个XML实体

QDomEntityReference,   代表一个XML实体引用

QDomNode、               一个DOM树中所有节点的基类

QDomNodeList、          QdomNode对象列表

QDomNotation,            代表一个XML表示法

QDomProcessingInstruction. 代表XML指令

QDomText、                表示解析的XML文档中的文本数据

 

 

 

 

重点:在.pro添加QT+=xml

添加一个C++空文件,不需要继承任何基类。如下图:

 

创建空的XML文件

class DomXML

{

public:

    DomXML();

 

    static void CreateXML(QString strFilePath);

};

 

//创建空的xml文件

void DomXML::CreateXML(QString strFilePath)

{

    //打开文件

    QFile file(strFilePath);

    if(file.exists())

    {

        qDebug()<<"FilePath exists";

        return ;

    }

    else

    {

        bool bIsOk=file.open(QIODevice::WriteOnly);

        if(bIsOk)

        {//打开文件成功

            //创建xml文档对象

            QDomDocument doc;

            //创建xml头部格式<?xml version="1.0" encoding="UTF-8"?>

            QDomProcessingInstruction ins;

            ins=doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");

            //追加元素

            doc.appendChild(ins);

 

            //根节点元素

            QDomElement root=doc.createElement("日期销售清单");

            doc.appendChild(root);

 

            //保存

            QTextStream stream(&file);//文本流关联文件

            doc.save(stream,4); //4代表缩进4个字符

 

        }

        else

        {//文件打开失败

            qDebug()<<"open file error";

            return ;

        }

    }

}

 

调用:

DomXML::CreateXML("../demo.xml");

 

创建成功

 

转载于:https://www.cnblogs.com/gd-luojialin/p/9215892.html

XML的choose标签主要用于条件查询,在mybatis的xml文件中一般与when标签结合使用。choose标签按照when标签的顺序来执行,如果有一个when满足条件,那么choose结束。如果所有的when都执行的结果都为false,那么会执行otherwise标签里的语句。 在给定的示例代码中,choose标签用于根据不同的条件查询sys_user表中的数据。首先判断参数id是否有值,如果有值则使用id进行查询。如果id没有值,则判断用户名userName是否有值,如果有值则使用用户名进行查询。如果用户名也没有值,则使SQL查询无结果。 所以,根据这个选择标签的配置和查询需求,在执行查询时会根据不同的条件选择不同的查询方式。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [MyBatis:choose标签的用法](https://blog.csdn.net/qq_36976201/article/details/115985514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架](https://download.csdn.net/download/m0_53659738/88275704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值