gpt4 book ai didi

C++ XML 解析器 QT - 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:59 26 4
gpt4 key购买 nike

下面是我的代码和 xml 文件。我正在尝试读取 xml 文件并存储内容。但它不起作用。请帮忙

int ParseConfigFile::populateUserValues ( string &OS, string &dir, string &logPath )
{
QDomDocument doc;
QDomElement element;

QFile file("config_v1.xml");

if ( doc.setContent( file.readAll() ) == false )
return 1;

element = doc.documentElement();

QDomNodeList list = element.childNodes();
QDomElement firstChild = list.at(0).toElement(); // will return the first child
QDomElement secondChild = list.at(1).toElement();
QDomElement thirdChild = list.at(2).toElement();


QString s1,s2,s3;
s1 = firstChild.text();
s2 = secondChild.text();
s3 = thirdChild.text();

OS = s1.toStdString();
dir = s2.toStdString();
logPath = s3.toStdString();

return 0;
}

和我的 XML

<?xml version="1.0"?>
<config>
<type>LINUX</type>
<dir>/home/</dir>
<path>/var/log/</path>
</config>

最佳答案

您应该像这样实例化 QDomDocument,然后您的代码才能工作:

if ( doc.setContent(&file) == false )
return 1;

QDomDocument 可以与 IO 设备(如 QFile)一起使用,这使其成为从文件设置 QDomDocument 内容的最佳方式。

无论如何,如果您正在尝试编写配置文件读取器/写入器,我建议您坚持使用 QSettings

QSettings settings("MyCompany", "MyApp");
QString s1,s2,s3;
s1 = settings.value("type").toString();
s2 = secondChild..value("dir").toString();
s3 = thirdChild..value("path").toString();

配置文件格式不会是 XML(它将是键=值),但您几乎不需要担心文件本身。在文件上设置任何值也很容易:

QSettings settings("MyCompany", "MyApp");
settings.setValue("path", "/var/log/");

您的配置文件将如下所示:

[General]
path=/var/log/

参见:QSettings documentation

关于C++ XML 解析器 QT - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472047/

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