`
bbsunchen
  • 浏览: 230650 次
  • 性别: Icon_minigender_1
  • 来自: 天朝帝都
社区版块
存档分类
最新评论

Qt 使用Dom 操作XML的范例

阅读更多
//--------------------读-----------------------------------------------
    QString filename = "D:/zhao/qt/tryxml-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug/history.xml";
    qDebug() << filename;
    QFile file(filename);
    if(!file.open(QFile::ReadOnly | QFile::Text))
    {
        qDebug() << "Error: Cannot read file" << filename
                 << ": " << file.errorString();
    }else
    {
        qDebug() << "succeed";
    }
    QString errorStr;
    int errorLine;
    int errorColumn;

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

    }
    QDomElement root = doc.documentElement();
    if(root.tagName() != "history")
    {
        qDebug() << "error";
    }

    QDomNode child = root.firstChild();
    while(!child.isNull())
    {
        if(child.toElement().tagName() == "data")
        {
            QDomNode grandChild = child.firstChild();
            while(!grandChild.isNull())
            {
                qDebug() << grandChild.toElement().tagName() << " " << grandChild.toElement().text();
                grandChild = grandChild.nextSibling();
            }
        }
        child = child.nextSibling();
    }
    //root.appendChild()
    file.close();
//-----------------------结束读------------------------------

//----------------------追加-----------------------------------------
    //QStringList attribs = ""; // 由用户指定
    QDomElement dataNode = doc.createElement("data");
    //carNode.setAttribute("ISBN", isbn); // isbn由用户指定

    //此处开始处理attribs字符串列表中的内容


    QDomText textNode = doc.createTextNode("1989"); // 取出每一个字符串

    QDomElement timeNode = doc.createElement("time");
    //attribNode.setAttribute("number", attribNumber);
    timeNode.appendChild(textNode);

    dataNode.appendChild(timeNode); // 属性结束

    root.appendChild(dataNode);
    //QDomNodeList historyNode = doc.elementsByTagName("history");
    //historyNode.item(0).appendChild(dataNode);

    // 写入XML文件中
    if (file.open(QIODevice::WriteOnly)) {
        QTextStream stream(&file);
        //historyNode.item(0).save(stream, 4);
        doc.save(stream, 4);
        file.close();
    }
//------------------------------结束追加-----------------------------------

//-----------------------------新建------------------------------------------
    QString backupname = "D:/zhao/qt/tryxml-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug/backup.xml";
    //qDebug() << filename;
    QFile backup(backupname);
    QDomDocument backupDoc;
    //要先open file
    backup.open(QIODevice::WriteOnly| QFile::Text);

    QDomElement rootNode = backupDoc.createElement("history");
    //QDomText tNode = doc.createTextNode("1989"); // 取出每一个字符串
    //rootNode.appendChild(tNode);
    backupDoc.appendChild(rootNode);

    QTextStream backupStream(&backup);
    backupDoc.save(backupStream, 4);
    backup.close();

//--------------------------------结束新建--------------------------------

 

0
4
分享到:
评论

相关推荐

    QT使用TinyXML开源库解析XML文件

    这个函数首先使用QT的DOM API加载XML文件,然后用TinyXML进行解析。TinyXML库提供了一个`TiXmlDocument`类,用于表示整个XML文档,`TiXmlElement`类代表XML的元素,`TiXmlAttribute`类则用于处理元素的属性。 在...

    基于QT5 qt 处理XML的三种方式 dom sax xmlstream 5个小例子

    基于QT5 qt 处理XML的三种方式 dom sax xmlstream 5个小例子 参考https://blog.csdn.net/p942005405/article/details/79743221

    xml.rar_QT XML _qt xml_xml QT

    总结来说,"xml.rar_QT XML _qt xml_xml QT"是一个基于QT库的XML解析示例,它展示了如何利用QT提供的工具来处理XML文件,包括使用DOM模型的QDomDocument和QDomElement,以及流式解析的QXmlStreamReader。这个例子...

    QT读取xml例子

    在本例子中,我们将关注如何使用QT来读取XML文件,这是一种常见的数据存储和交换格式,常用于配置文件、数据序列化等领域。 首先,为了在QT中读取XML文件,我们需要引入相关的头文件`QDomDocument`和`QFile`。`...

    Qt操作XML文档(增删改查)

    本篇文章将深入探讨如何在Qt环境下进行XML文档的操作,包括增、删、改、查等常见功能。 首先,Qt中的`QDomDocument`类是用于解析和操作XML文档的核心类。它基于DOM(Document Object Model)模型,允许开发者以树形...

    QT xml操作例子

    总之,这个"QT xml操作例子"展示了如何在不使用DOM模型的情况下,利用QT库处理XML文件,这对于处理大型XML数据或者对内存效率有较高要求的应用场景尤其有用。通过QXmlStreamReader和QXmlStreamWriter,开发者可以...

    Qt-Jsonxml.zip

    在使用提供的工程文件时,你可以查看源码,了解Qt如何实现JSON和XML的解析、序列化以及读写操作。这将有助于你更好地理解这两种数据格式,以及如何在实际项目中高效地使用Qt的API。此外,建议查阅官方文档以获取更...

    Qt读取XML例程.zip

    本教程将通过标题"Qt读取XML例程.zip"中的内容,详细阐述如何使用Qt的DOM和SAX解析器来操作XML文件。 首先,让我们了解DOM(Document Object Model)和SAX(Simple API for XML)这两种XML解析策略。 1. DOM解析:...

    基于QT5.8和QtCreator的开发如何创建和编写XML以及解析XML,内涵源代码.zip

    在本文中,我们将深入探讨如何使用QT5.8和QtCreator进行XML的创建、编写以及解析。QT5.8是一个强大的跨平台应用程序开发框架,而QtCreator是其配套的集成开发环境(IDE),提供了丰富的功能来支持开发工作。XML...

    Qt对xml文件的增删改查(附带可运行例子)

    这个例子展示了如何使用Qt处理XML文件的基本操作。在实际应用中,你可能需要根据需求进行更复杂的操作,如处理属性、子节点、注释等。通过熟练掌握这些基本操作,你可以构建出强大的XML处理程序。对于初学者来说,...

    XML在Qt中三种方法解析的简单例子

    本篇文章将详细介绍这三种在Qt中解析XML的方法,并通过实际例子来展示它们的使用。 1. DOM解析 DOM模型将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历和操作XML。在Qt中,QDomDocument类是...

    三种解析XML的方法

    在Java中,有三种主要的XML解析方法:DOM(Document Object Model)、SAX(Simple API for XML)和dom4j。每种方法都有其特点和适用场景,下面将详细阐述这三种解析方法。 1. DOM解析: DOM解析器将整个XML文档加载...

    Qt编程范例之中高级篇(4)之XML相关部分(附源码)

    在本篇Qt编程范例之中高级篇(4)中,我们将深入探讨XML处理技术,这是在C++开发中,特别是使用Qt框架时一个非常重要的部分。XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,因其灵活性和跨...

    利用MSXML解析xml文件实例

    在“XMLTool”这个例子中,可能包含一个工具或者脚本,用于演示上述步骤,帮助用户更好地理解和应用MSXML解析XML文件。这个工具可能包含了读取、修改XML文件的功能,并以可视化的形式展示XML结构,方便进行调试和...

    tinyXML使用例子以及教程和文档

    - **不支持 XPath 和 XSLT**:TinyXML 不提供对 XML 查询语言 XPath 或转换语言 XSLT 的支持,如果你需要这些功能,可能需要考虑使用更强大的库如 libxml2 或 Qt 的 XML 模块。 在实际项目中,使用 TinyXML 进行 ...

    Tinyxml文件解析经典例子

    TinyXML 的优点是使用起来比较简单,很容易上手,本文给出一个使用 TinyXML 进行 XML 解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。 例如,我们可以使用 TinyXML 来解析 Students.xml 文件,该...

    精通qt4编程(源代码)

    \19.3 使用JavaScript操作Qt对象 463 \19.4 基于Prototype的继承 467 \19.5 小结 467 \第20章 国际化 468 \20.1 Unicode与字符编码 468 \20.1.1 Unicode 468 \20.1.2 汉字编码 469 \20.1.3 编码转换 469 \20.2 Qt ...

    精通Qt4编程(第二版)源代码

    \19.3 使用JavaScript操作Qt对象 463 \19.4 基于Prototype的继承 467 \19.5 小结 467 \第20章 国际化 468 \20.1 Unicode与字符编码 468 \20.1.1 Unicode 468 \20.1.2 汉字编码 469 \20.1.3 编码转换 469 \...

    利用vs解析xml文件到控制台.rar

    以下是一个简单的例子,展示了如何使用TinyXML解析XML并输出到控制台: ```cpp #include "tinyxml.h" int main() { TiXmlDocument doc("example.xml"); if (!doc.LoadFile()) { std::cerr !" ; return 1; } ...

    Cmarkup类——解析xml

    这个例子展示了如何使用Cmarkup类加载XML文件,找到根元素,遍历其子元素,并获取子元素的属性和文本。Cmarkup类简化了XML处理的过程,使得开发者可以更专注于业务逻辑,而不是XML解析的细节。然而,为了使用Cmarkup...

Global site tag (gtag.js) - Google Analytics