1、修改工程文件PRO属性
在工程文件设置中修改[Qt Modules] 中增加xml;
或者直接修改pro文件:
加一行:QT+=xml
2、源程序
XML例:
把xml文件存入utf-8格式的文件中。(如果没有中文字符,文件存放格式可以忽略)
<?xml version="1.0" encoding="utf-8"?>
<classes info="test">
<class class_name="english">
<students> 50 </students>
<classroom>A building, Room2022</classroom>
</class>
<class class_name="chemistry">
<students> 50 </students>
<classroom>B building, Room2023</classroom>
</class>
</classes>
#include <QDomDocument> // 文件头必须引入
void parsexml(QString file_name)
{
if (file_name.isEmpty())
return;
QFile file(file_name);
if (!file.open(QFile::ReadOnly | QFile::Text))
{
return;
}
QDomDocument document;
QString error;
int row = 0;
int column = 0;
if (!document.setContent(&file, false, &error, &row, &column))
{
return;
}
if (document.isNull())
{
return;
}
QDomElement root = document.documentElement();
QString root_tag_name = root.tagName();
if (root.hasAttribute("info")) // 判断是否有【info】属性值
{
QString name = root.attributeNode("info").value();// 取【info】属性值
}
QDomElement class_element = root.firstChildElement();// 取第1个子节点。
if (class_element.isNull())
return;
QString tag_name = class_element.tagName();// 取元素的tag名。
QString class_name = class_element.attributeNode("class_name").value();// 取元素【class_name】属性值
//获取子节点
QDomNodeList list = root.childNodes();
int count = list.count();// 获取子节点个数
for (int i = 0; i < count; i++)
{
QDomNode dom_node = list.item(i);
QDomElement element = dom_node.toElement();
QString element_tag_name = element.tagName(); // 取元素的节点名
// 取元素的属值:下面两个函数是取属性值的方法
QString name_1 = element.attributeNode("class_name").value();
QString name_2 = element.attribute("class_name");
//获取子节点
QDomNodeList child_list = element.childNodes();
int child_count = child_list.count();
for (int j = 0; j < child_count; j++)
{
QDomNode child_dom_node = child_list.item(j);
QDomElement child_element = child_dom_node.toElement();
QString child_tag_name = child_element.tagName();// 取元素的节点名
QString child__tag_value = child_element.text();// 取元素的属值
}
}
}
3、调用例子:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
parsexml("d:\\test.xml"); // 注意文件存放位置,修改为实际的文件名和路径
return a.exec();
}