c++ - Qt 更新单个 XML 元素

标签 c++ xml qt xmlwriter

我想更新 Qt v5.0.2 中的单个 XML 元素。

假设这是我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <myValue1 value="1" />
    <myValue2 value="2" />
</root>

我想更新 XML 元素 myValue 并将值设置为 2。

<?xml version="1.0" encoding="utf-8"?>
<root>
    <myValue1 value="2" />
    <myValue2 value="2" />
</root>

我如何在 Qt 中处理这个问题?当然,我可以创建一个 QXmlStreamWriter 并编写完整的 XML(所有 4 条数据行),但我想做一些小而聪明的事情。

最佳答案

使用QDomDocument:

QDomDocument doc;
doc.setContent(<your xml>);

QDomNodeList elems = doc.elementsByTagName("myValue1");
if (!elems.isEmpty())
{
    QDomElement el = elems.at(0).toElement();
    if (!el.isNull())
    {
        if (el.hasAttribute("value"))
        {
            el.setAttribute("value", "2");
        }
    }
}

qDebug() << doc.toString();

关于c++ - Qt 更新单个 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17936818/

相关文章:

c++ - 配置 Netbeans 基本设置

c++ - Visual Studio 2012 的新 C++ 单元测试框架是否可移植?

c++ - VS2012中使用 'volatile'关键字的最佳实践

c# - 数据契约序列化不适用于所有元素

Android - 当应用程序在后台时,回收站 View 会调整大小

c++ - 如何将 Qt 与应用程序打包(但不是静态的)

c++ - 不能将包含 math.h 的 C 库与 g++ 7 (Raspberry PI) 一起使用

java - 高枕无忧 3 + Jackson + Tomcat + XML 响应

c++ - Qt 包含和预编译 header 的最佳实践?

c++ - QSqlDatabasePrivate::removeDatabase: connection 'myConnectionName' is still in use, 所有查询将停止工作