簡體   English   中英

C ++ XML解析器QT-不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM