[英]C++ XML parser QT - not working
下面是我的代碼和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(它將是key = value),但是您幾乎不必擔心文件本身。 在文件上設置任何值也很容易:
QSettings settings("MyCompany", "MyApp");
settings.setValue("path", "/var/log/");
您的配置文件將如下所示:
[General]
path=/var/log/
請參閱: QSettings文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.