C++ C++;XML解析器QT-不工作
下面是我的代码和xml文件。我正在尝试读取xml文件并存储内容。但它不起作用。请帮忙C++ C++;XML解析器QT-不工作,c++,xml,qt,C++,Xml,Qt,下面是我的代码和xml文件。我正在尝试读取xml文件并存储内容。但它不起作用。请帮忙 int ParseConfigFile::populateUserValues ( string &OS, string &dir, string &logPath ) { QDomDocument doc; QDomElement element; QFile file("config_v1.xml"); if ( doc.setContent( f
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>
LINUX
/家/
/var/log/
您应该像这样实例化QDOM文档,然后您的代码就可以工作了:
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/
请参阅:您应该像这样实例化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/
请参阅:您的错误是什么?此外,这不是解析xml的好方法。一旦更改xml中的顺序,代码就会显示错误的值。我不会得到任何输出,即NULL。你能告诉我哪一个是最好的解析方法吗。我是XML新手。你的错误是什么?此外,这不是解析xml的好方法。一旦更改xml中的顺序,代码就会显示错误的值。我不会得到任何输出,即NULL。你能告诉我哪一个是最好的解析方法吗。我是XML新手。你说的QSeting是什么意思?@Winbros-QSettings是一个帮助你从配置文件读写的类。它非常易于使用,并将配置文件保存在程序运行平台上的相应用户文件夹中(即windows上的Users/me/Application Data/myApp和Linux上的home/me/.config/myApp)刚刚编辑了答案,你能看到这是如何实现的吗QSettings@Raphael但是你会在哪里提到配置呢filename@Winbros-这是传递给QSettings构造函数的第二个参数。基本上,它在一个名为第一个参数的文件夹上创建了一个名为第二个参数的文件。你说的QSETING是什么意思?@Winbros-QSettings是一个帮助你从配置文件读写的类。它非常易于使用,并将配置文件保存在程序运行平台上的相应用户文件夹中(即windows上的Users/me/Application Data/myApp和Linux上的home/me/.config/myApp)刚刚编辑了答案,你能看到这是如何实现的吗QSettings@Raphael但是你会在哪里提到配置呢filename@Winbros-这是传递给QSettings构造函数的第二个参数。基本上,它会在一个名为第一个参数的文件夹中创建一个名为第二个参数的文件