QT 5.12解析html格式的数据

1 篇文章 0 订阅
1 篇文章 0 订阅
<html>
<p>start</p>
<ID>123456</ID>
<MGR>hello</MGR>
<NAME>zhangsan</NAME>
<p>END</p>
</html>

就简单的解析这html格式的数据
有时候我们要提取里面的元素值,就好像提取ID元素里面的123456

方法:利用QT提供的xml
(具体xml和html两种格式区别我这就不多说)
代码片段:

bool AnalysisXML::analysisdata(QByteArray arry)
{
    QString errorStr;
    int errorLine;
    int errorColumn;

    QDomDocument doc;

    if (!doc.setContent(arry,false, &errorStr, &errorLine, &errorColumn))
    {
       qDebug() << "Error: Parse error at line " << errorLine << ", "
                  << "column " << errorColumn << ": "
                  << qPrintable(errorStr) ;
        return false;
    }

    QDomElement root = doc.documentElement();
//    if (root.tagName() != "trx")
//    {
//        qDebug() << "Error: Not a trx xml" ;
//        return false;
//    }

    parseTrxMembers(root);
    return true;
}

void AnalysisXML::parseTrxMembers(const QDomElement &element)
{
    QDomNode child = element.firstChild();   //找到元素下的所有节点
    while (!child.isNull())
    {
        if (child.toElement().tagName() != "multistage")  //查找特殊节点名
        {
            qDebug()<<child.toElement().tagName()<<":"<<child.toElement().text();

        }
        else
        {
            parseDefectMembers(child.toElement());
        }
        child = child.nextSibling();  //下一个儿子(同级节点)
    }

}

void AnalysisXML::parseDefectMembers(const QDomElement &element)
{
    QDomNode child = element.firstChild();   //找到元素下的所有节点
    while (!child.isNull())
    {
        parseDefect_CodeMembers(child.toElement());
        child = child.nextSibling();  //下一个儿子(同级节点)
    }
}

void AnalysisXML::parseDefect_CodeMembers(const QDomElement &element)
{

    QDomNode child = element.firstChild();   //找到元素下的所有节点
    while (!child.isNull())
    {
        qDebug()<<child.toElement().tagName()<<":"<<child.toElement().text();
;
        child = child.nextSibling();  //下一个儿子(同级节点)
    }

}

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的应用程序开发框架,支持多种编程语言,其中包括C++。Qt提供了一种以事件驱动方式处理串口数据的方法,可以方便地读取和写入串口数据。 首先,在Qt中使用串口需要添加SerialPort模块。在.pro文件中添加如下代码: ``` QT += serialport ``` 接下来,在代码中导入串口相关的头文件: ```cpp #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> ``` 然后,创建一个QSerialPort对象,并进行初始化设置: ```cpp QSerialPort serial; serial.setPortName("COM1"); // 设置串口名称 serial.setBaudRate(QSerialPort::Baud9600); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 设置数据位数 serial.setParity(QSerialPort::NoParity); // 设置校验位 serial.setStopBits(QSerialPort::OneStop); // 设置停止位 serial.setFlowControl(QSerialPort::NoFlowControl); // 设置流控制 ``` 打开串口并判断是否成功: ```cpp if (serial.open(QIODevice::ReadWrite)) { // 串口打开成功 } else { // 串口打开失败 } ``` 使用串口读取数据需要在适当的位置连接QSerialPort的readyRead()信号到一个槽函数,槽函数用于处理读取到的数据: ```cpp connect(&serial, &QSerialPort::readyRead, this, &MyClass::handleSerialData); ``` 数据读取槽函数的示例代码如下: ```cpp void MyClass::handleSerialData() { QByteArray data = serial.readAll(); // 处理读取到的数据 } ``` 最后,在适当的位置关闭串口: ```cpp serial.close(); ``` 以上就是使用Qt 5.12读取COM串口数据的简要示例,通过以上的步骤,可以方便地使用Qt读取和处理串口数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值