Я пытаюсь изменить атрибут 0tsфайла .ts в Qt, используя сам Qt.Изменить значение атрибута тега XML в Qt
Вот пример 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-файл. Пожалуйста, помогите мне.
Я не настолько осведомлен о Qt, но, скорее всего, 'tsFileXml' только в памяти, вам нужно фактически записать (модифицированный) XML в файл. –
Да, это была проблема. Благодарю. –