Qt操作XML例子

前端之家收集整理的这篇文章主要介绍了Qt操作XML例子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

文件QDomDocument读取XML文件

XML文件路径:D:\Test\qt\xml\test.xml内容

 
 
  1. <?xmlversion="1.0"encoding="GBK"?>
  2. <Root>
  3. <TestAttr="属性">金财税</Test>
  4. </Root>

1、新建一个Qt工程,命名为xml。

2、在xml.pro文件加入一句 Qt += xml

3、在界面上放一个PushButton和一个TextEdit

main.cpp

 
 
  1. #include<QtGui/QApplication>
  2. #include"mainwindow.h"
  3. //为了正常显示中文,手动加入以下引用
  4. #include<QTextCodec>
  5. intmain(intargc,char*argv[])
  6. {
  7. QApplicationa(argc,argv);
  8. //手动加入以下代码,保证中文可以正常显示
  9. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
  10. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
  11. QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
  12. MainWindoww;
  13. w.show();
  14. returna.exec();
  15. }

在PushButton的clicked()槽中写读取xml的代码

mainwindow.cpp

 
 
  1. #include"mainwindow.h"
  2. #include"ui_mainwindow.h"
  3. //以下是手工添加的引用
  4. #include<QDomDocument>
  5. #include<QDomElement>
  6. #include<QDomAttr>
  7. #include<QFile>
  8. MainWindow::MainWindow(QWidget*parent):
  9. QMainWindow(parent),
  10. ui(newUi::MainWindow)
  11. {
  12. ui->setupUi(this);
  13. }
  14. MainWindow::~MainWindow()
  15. {
  16. deleteui;
  17. }
  18. voidMainWindow::on_pushButton_clicked()
  19. {
  20. QFilefile("D:/Test/qt/xml/test.xml");
  21. if(!file.open(QFile::ReadOnly|QFile::Text))
  22. {
  23. ui->textEdit->append(tr("XML文件打开失败"));
  24. }
  25. QDomDocumentdoc;
  26. QStringerrStr;
  27. interrLine,errCol;
  28. //setContent是将指定的内容指定给QDomDocument解析,第一参数可以是QByteArray或者是文件名等。
  29. if(!doc.setContent(&file,false,&errStr,&errLine,&errCol))
  30. {
  31. ui->textEdit->append(tr("指定XML内容失败原因:")+errStr);
  32. }
  33. file.close();
  34. //根节点
  35. QDomElementroot=doc.documentElement();
  36. ui->textEdit->append(root.nodeName());///输出根节点名称输出Root
  37. QDomElementchild=root.firstChildElement();
  38. ui->textEdit->append(child.nodeName());//输出内容:Test
  39. ui->textEdit->append(child.text());//child.nodeValue()无值,原因不明输出内容:金财税
  40. ui->textEdit->append(child.attributeNode("Attr").nodeName());//输出内容:Attr
  41. ui->textEdit->append(child.attributeNode("Attr").nodeValue());//输出内容属性
  42. }

运行结果:

在上一节的工程中加入一个按钮,在按钮的clicked()槽中加入以下代码

 
 
  1. voidMainWindow::on_pushButton_2_clicked()
  2. {
  3. QFilefile("C:/new.xml");
  4. if(!file.open(QFile::WriteOnly|QFile::Text))
  5. {
  6. ui->textEdit->append(tr("文件打开失败"));
  7. }
  8. doc.appendChild(doc.createProcessingInstruction("xml","version=\"1.0\"encoding=\"GBK\""));
  9. //根节点
  10. QDomElementroot=doc.createElement("Root");
  11. doc.appendChild(root);
  12. //子节点
  13. QDomElementchild=doc.createElement("Test");
  14. QDomTexttext=doc.createTextNode(tr("金财税"));//child.setNodeValue(tr("金财税"))的方法效果,原因不明
  15. child.appendChild(text);
  16. child.setAttribute("Attr","属性");
  17. root.appendChild(child);
  18. //输入XML文件
  19. QTextStreamout(&file);
  20. doc.save(out,4);//这里的4暂时不知道是什么意思
  21. file.close();
  22. }

还需要在源文件头部加入引用:

 
 
  1. #include<QTextStream>

如果执行成功,会在C盘里找到new.xml文件文件内容如下:

 
 
  1. <?xmlversion="1.0"encoding="GBK"?>
  2. </Root>

本文出自 “自由自我博客,请务必保留此出处http://www.jb51.cc/article/p-aqqehpit-ev.html

猜你在找的XML相关文章