gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:13:12 33 4
gpt4 key购买 nike

我正在尝试使用 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 文件。请帮助我。

最佳答案

我猜,但我认为您的 XML 只存在于您的内存中。您必须触发类似 tsFileXml.WriteToFile(filename) 的方法来将更改存储到文件系统上的文件中。

关于c++ - 在 Qt 中更改 XML 标记的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839034/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com