[Qt教程] 第30篇 XML(四)使用流读写XML
生活随笔
收集整理的這篇文章主要介紹了
[Qt教程] 第30篇 XML(四)使用流读写XML
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[Qt教程]?第30篇 XML(四)使用流讀寫XML
??|?查看: 611|?回復: 0| 使用流讀寫XML 版權聲明 該文章原創于作者yafeilinux,轉載請注明出處! 導語 ? ?? ??從Qt 4.3開始引入了兩個新的類來讀取和寫入XML文檔:QXmlStreamReader和QXmlStreamWriter。?QXmlStreamReader類提供了一個快速的解析器通過一個簡單的流API來讀取格式良好的XML文檔,它是作為Qt的SAX解析器的替代品的身份出現的,因為它比SAX解析器更快更方便。QXmlStreamReader可以從QIODevice或者QByteArray中讀取數據。流讀取器的基本原理就是將XML文檔報告為一個記號(tokens)流,這一點與SAX相似,而它們的不同之處在于XML記號被報告的方式。在SAX中,應用程序必須提供處理器(回調函數)來從解析器獲得所謂的XML事件;而對于QXmlStreamReader,是應用程序代碼自身來驅動循環,在需要的時候可以從讀取器中一個接一個的拉出記號。這個是通過調用readNext()函數實現的,它可以讀取下一個記號,然后返回一個記號類型,然后可以使用isStartElement()和text()等函數來判斷這個記號是否包含我們需要的信息。使用這種主動拉取記號的方式的最大的好處就是可以構建遞歸解析器,也就是可以在不同的函數或者類中來處理XML文檔中的不同記號。 環境:Windows Xp + Qt 4.8.4+Qt Creator2.6.2 目錄 一、解析XML文檔 二、寫入XML文檔 正文 一、解析XML文檔 1.新建Qt控制臺應用,項目名稱為myXmlStream,完成后將myXmlStream.pro文件的第一行代碼更改為: QT? ?? ??+= core??xml 然后保存該文件。 2.然后打開main.cpp文件,將內容更改如下: 二、寫入XML文檔 與QXmlStreamReader對應的是QXmlStreamWriter,它通過一個簡單的流API提供了一個XML寫入器。QXmlStreamWriter的使用是十分簡單的,只需要調用相應的記號的寫入函數來寫入相關數據即可。 將前面主函數的內容更改為: int?main(int?argc,?char?*argv[]) { ? ??QCoreApplication?a(argc,?argv); ? ??QFile?file("../myXmlStream/my2.xml"); ? ??if?(!file.open(QFile::WriteOnly?|?QFile::Text)) ? ??{ ? ?? ??qDebug()?<<?"Error: cannot open file"; ? ?? ??return?1; ? ??} ? ??QXmlStreamWriter?stream(&file); ? ??stream.setAutoFormatting(true); ? ??stream.writeStartDocument(); ? ??stream.writeStartElement("bookmark"); ? ??stream.writeAttribute("href",?"http://qt.nokia.com/"); ? ??stream.writeTextElement("title",?"Qt Home"); ? ??stream.writeEndElement(); ? ??stream.writeEndDocument(); ? ??file.close(); ? ??qDebug()?<<?"write finished!"; ? ??return?a.exec(); } 這里使用了setAutoFormatting(true)函數來自動設置格式,這樣會自動換行和添加縮進。然后使用了writeStartDocument(),該函數會自動添加首行的XML說明(即<?xmlversion="1.0" encoding="UTF-8"?>),添加元素可以使用writeStartElement(),不過,這里要注意,一定要在元素的屬性、文本等添加完成后,使用writeTextElement()來關閉前一個打開的元素。在最后使用writeEndDocument()來完成文檔的寫入?,F在大家可以運行程序了,這時會在項目目錄中生成一個XML文檔。 結語 數據庫和XML在很多程序中都經常用到,它們的使用也總是和數據的顯示聯系起來,所以學習好數據庫的知識也是很重要的,它們可以說是密不可分的。相關內容,大家也可以參考《Qt Creator快速入門》的相關章節以及《Qt 及Qt Quick開發實戰精解》的數據管理系統的例子,里面同時應用了數據庫和XML。 涉及到的源碼:??myXmlStream.zip?? |
總結
以上是生活随笔為你收集整理的[Qt教程] 第30篇 XML(四)使用流读写XML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Qt教程] 第23篇 数据库(三)利用
- 下一篇: [Qt教程] 第29篇 XML(三)Qt