以下是我的代码& 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>
答案 0 :(得分:1)
您应该像这样实例化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(它将是key = value),但您几乎不需要担心文件本身。要在文件上设置任何值也很容易:
QSettings settings("MyCompany", "MyApp");
settings.setValue("path", "/var/log/");
您的配置文件如下所示:
[General]
path=/var/log/