ZBLOG

error: no member named 'text' in 'QDomNode'

抱歉给你带来了困惑,QDomNode 确实没有直接的 text() 方法。你需要首先将其转换为 QDomElement,然后再调用 text() 方法。以下是修正后的代码示例:

#include <QCoreApplication>
#include <QFile>
#include <QDomDocument>
#include <QString>
#include <QDebug>

void parseXml(const QString &xmlContent) {
    QDomDocument document;

    // 设置XML内容
    if (!document.setContent(xmlContent)) {
        qDebug() << "Failed to parse XML.";
        return;
    }

    // 获取根元素
    QDomElement root = document.documentElement();
    
    // 打印根元素名称(可选)
    qDebug() << "Root element:" << root.tagName();

    // 查找 CmdType 和 SN 元素(可选)
    QDomNodeList cmdTypeList = root.elementsByTagName("CmdType");
    QDomNodeList snList = root.elementsByTagName("SN");
    
    if (!cmdTypeList.isEmpty()) {
        QString cmdType = cmdTypeList.at(0).toElement().text();
        qDebug() << "CmdType:" << cmdType;
    }

    if (!snList.isEmpty()) {
        QString sn = snList.at(0).toElement().text();
        qDebug() << "SN:" << sn;
    }

    // 处理 Item 元素
    QDomNodeList itemList = root.elementsByTagName("Item");
    
    for (int i = 0; i < itemList.size(); ++i) {
        QDomElement itemElement = itemList.at(i).toElement();
        
        // 使用 toElement 来获取 Id 节点并读取文本
        QDomNode idNode = itemElement.firstChildElement("Id");

        if (!idNode.isNull()) {
            QString id = idNode.toElement().text();  // 修正:将 idNode 转换为 QDomElement
            qDebug() << "Item Id:" << id;
        }
    }
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

   QString xmlData =
       "<?xml version=\"1.0\" encoding=\"GB2312\" standalone=\"yes\"?>"
       "<Notify>"
       "<CmdType>HotWordUpdate</CmdType>"
       "<SN>5</SN>"
       "<Item>"
           "<Id>1</Id>"
       "</Item>"
       "<Item>"
           "<Id>2</Id>"
       "</Item>"
       "<Item>"
           "<Id>3</Id>"
       "</Item>"
        "<Item>"
           "<Id>4</Id>"
        "</Item>"
     "</Notify>";

     parseXml(xmlData);

     return a.exec();
}

更改说明:

  • 在处理每个 Item 时,将 idNode 转换为 QDomElement 以便调用其 text() 方法。原来的错误是在尝试在 QDomNode 上直接使用了不存在的方法。

这样,你就可以正确地提取 XML 中各个元素的文本内容了。如果有其他问题,请随时告诉我!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20364

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?