在Qt中更改XML标记的属性值

时间:2015-06-15 06:58:00

标签: c++ xml qt

我正在尝试使用Qt本身更改Qt中的.ts文件的language属性。

以下是XML格式示例。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE TS>
<TS language="es_ES" version="2.1">
    ...
</TS>

我尝试过不同的方法,但没有运气。 以下是我使用的方法。

FileIOError FileIO::changeLanguageOfTsFile( QString tsFileName, QString langCode )
{
    QDomDocument tsFileXml;
    QFile xmlFile(tsFileName);

    if ( !xmlFile.open(QIODevice::ReadWrite) )
    {
        qDebug() << "File not found." << endl;
        return FileNotFound;
    }

    if ( !tsFileXml.setContent(&xmlFile) )
    {
        qDebug() << "Invalid content in the XML file : Reading TS File. " << tsFileName << endl;
        xmlFile.close();
        return InvalidXmlFile;
    }

    QDomElement ts = tsFileXml.firstChildElement("TS");

    if (ts.isNull())
    {
        qDebug() << "Invalid TS file" << endl;
        return InvalidFile;
    }

    // In here, I try to change the attribute.
    QDomAttr attr = ts.attributeNode("language");
    attr.setValue(langCode);
    ts.setAttributeNode(attr);
    xmlFile.close();

    return ReadSuccess;
}

代码运行完美,但XML文件没有更新。

我也尝试了以下内容。

ts.setAttribute("language", langCode);

但没有运气。我不知道为什么这不会更新XML文件。请帮帮我。

1 个答案:

答案 0 :(得分:1)

我想,但我认为你的XML只存在于你的记忆中。您必须触发像tsFileXml.WriteToFile(filename)这样的想法,将更改存储到文件系统上的文件中。