• 1880724阅读
  • 3回复

[提问]qt 关于xml建立俩个节点代码为啥不行? [复制链接]

上一主题 下一主题
离线mirro
 
只看楼主 倒序阅读 楼主  发表于: 2012-04-24

  1. QDomElement root=domD.createElement(QObject::tr("staff"));
  2. domD.appendChild(root);
  3. QDomElement duty=domD.createElement(QObject::tr("report_duty"));
  4. QDomElement age=domD.createElement(QObject::tr("age"));
  5. QDomElement stature=domD.createElement(QObject::tr("stature"));
  6. QDomElement prompt=domD.createElement(QObject::tr("prompt"));
  7. QDomText text;
  8. text=domD.createTextNode("2012-06-23");
  9. duty.appendChild(text);
  10. text=domD.createTextNode("21");
  11. age.appendChild(text);
  12. text=domD.createTextNode("175");
  13. stature.appendChild(text);
  14. text=domD.createTextNode("profession");
  15. prompt.appendChild(text);
  16. root.appendChild(duty);
  17. root.appendChild(age);
  18. root.appendChild(stature);
  19. root.appendChild(prompt);
  20. QDomElement root2=domD.createElement(QObject::tr("staff2"));
  21. domD.appendChild(root2);
  22. QDomElement name=domD.createElement(QObject::tr("name"));
  23. text=domD.createTextNode("Mirro");
  24. name.appendChild(text);
  25. root.appendChild(name);
  26. QTextStream out(&file);
  27. domD.save(out,5);

离线passion_wu
只看该作者 1楼 发表于: 2012-04-24
我不知道你的为什么不行,也不知道你想要添加怎样的节点
这是我以前写的代码,运行正常:

int DevModel::save(const QString & fileName)
{
    QFile file(fileName);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
    {
        qDebug("cannot create file!");
        return -1;
    }
    QDomDocument doc;
    QDomElement emt;
    QDomProcessingInstruction dpi;
    dpi = doc.createProcessingInstruction("xml", "version=\"1.0\"");
    doc.appendChild(dpi);

    QDomElement root = doc.createElement("config");
    doc.appendChild(root);

    foreach(DEV_INFO devInfo, d->devInfos)
        {
            QDomElement child = doc.createElement("dev");
            child.setAttribute("no", devInfo.no);
            child.setAttribute("name", devInfo.name);
            child.setAttribute("desc", devInfo.desc);
            child.setAttribute("fn", devInfo.fn);
            root.appendChild(child);
        }
    QTextStream out(&file);
    doc.save(out, 4);

    QMessageBox::information(0, "", tr("保存成功"));
    return 0;
}

// DEV_INFO 是我自己定义的结构体
离线mirro
只看该作者 2楼 发表于: 2012-04-26
回 1楼(passion_wu) 的帖子
QFile file("rank_insignal2.xml");
QDomElement root=domD.createElement(QObject::tr("staff"));
domD.appendChild(root);
QDomElement duty=domD.createElement(QObject::tr("report_duty"));
QDomText text;
text=domD.createTextNode("2012-06-23");
duty.appendChild(text);
root.appendChild(duty);
QDomElement root2=domD.createElement(QObject::tr("staff2"));
domD.appendChild(root2);
QDomElement name=domD.createElement(QObject::tr("name"));
text=domD.createTextNode("Mirro");
name.appendChild(text);
root.appendChild(name);
QTextStream out(&file);
domD.save(out,2);
这个杂不行呀?
离线zzh12215
只看该作者 3楼 发表于: 2012-04-26
怎么个不行法呢?

domD.appendChild(root2);
判断一下这句代码返回的是不是null node,如下:
QDomNode node = domD.appendChild(root2);
if(node.isNull()) 则表示不允许有两个root;
快速回复
限100 字节
 
上一个 下一个