1. 程式人生 > >QT中使用QXmlStreamReader解析XML檔案

QT中使用QXmlStreamReader解析XML檔案

轉載請註明連結與作者huihui1988

XML檔案由於其擴充套件性與相容性的優點,被廣泛用作軟體和系統的配置檔案。這裡簡要介紹一下QT下如何來解析XML檔案。

原始碼:

xml_reader.h

  1. #ifndef XML_READER_H
  2. #define XML_READER_H
  3. #include <QtCore>
  4. //#include <QtGui>
  5. class xml_reader : public QXmlStreamReader  
  6. {  
  7.     //Q_OBJECT
  8. public:  
  9.     xml_reader();  
  10.     bool read(QIODevice *device);  
  11. private:  
  12.     void read_data();  
  13.     void read_startweek();  
  14.     void read_eventnumber();  
  15.     void read_period();  
  16.     void read_id();  
  17.     void read_starttime();  
  18.     void read_endtime();  
  19.     void read_exception();  
  20.     void read_subexception();  
  21.     void read_description();  
  22.     void read_duration();  
  23.     void read_event();  
  24.     void read_offsettime();  
  25.     void read_eventdesc();  
  26.     void read_eventname();  
  27.     void read_prompt();  
  28.     void read_lasthandle();  
  29.     void read_unknow();  
  30. };  
  31. #endif // XML_READER_H
 

xml_reader.cpp

  1. #include "xml_reader.h"
  2. xml_reader::xml_reader()  
  3. {}  
  4. bool xml_reader::read(QIODevice *device)  
  5. {  
  6.     setDevice(device);  
  7.     while(!atEnd())  
  8.     {  
  9.         readNext();  
  10.         if(isStartElement())  
  11.         {  
  12.             if(name() == "data")  
  13.             {  
  14.                 read_data();  
  15.             }  
  16.         }  
  17.     }  
  18.     return !error();  
  19. }  
  20. void xml_reader::read_data()  
  21. {  
  22.     qDebug()<<"Start to read data...";  
  23.     while(!atEnd())  
  24.     {  
  25.         readNext();  
  26.         if(isStartElement())  
  27.         {  
  28.             if(name() == "period")  
  29.             {  
  30.                 read_period();  
  31.             }  
  32.             if(name() == "startweek")  
  33.             {  
  34.                 read_startweek();  
  35.             }  
  36.             if(name() == "eventnumber")  
  37.             {  
  38.                 read_eventnumber();  
  39.             }  
  40.         }  
  41.         if(isEndElement())  
  42.         {  
  43.             if(name() == "data")  
  44.             {  
  45.                 qDebug()<<"Now at the end of data element...";  
  46.                 break;  
  47.             }  
  48.         }  
  49.     }  
  50. }  
  51. void xml_reader::read_startweek()  
  52. {  
  53.     qDebug()<<"startweek is: "<<readElementText();  
  54. }  
  55. void xml_reader::read_eventnumber()  
  56. {  
  57.     qDebug()<<"eventNumber is: "<<readElementText();  
  58. }  
  59. void xml_reader::read_period()  
  60. {  
  61.     qDebug()<<"Start to read period...";  
  62.     while(!atEnd())  
  63.     {  
  64.         readNext();  
  65.         if(isStartElement())  
  66.         {  
  67.             if(name() == "id")  
  68.             {  
  69.                 read_id();  
  70.             }  
  71.             if(name() == "starttime")  
  72.             {  
  73.                 read_starttime();  
  74.             }  
  75.             if(name() == "endtime")  
  76.             {  
  77.                 read_endtime();  
  78.             }  
  79.             if(name() == "exception")  
  80.             {  
  81.                 read_exception();  
  82.             }  
  83.             if(name() == "duration")  
  84.             {  
  85.                 read_duration();  
  86.             }  
  87.             if(name() == "event")  
  88.             {  
  89.                 read_event();  
  90.             }  
  91.         }  
  92.         if(isEndElement())  
  93.         {  
  94.             if(name() == "period")  
  95. 相關推薦

    QT使用QXmlStreamReader解析XML檔案

    轉載請註明連結與作者huihui1988 XML檔案由於其擴充套件性與相容性的優點,被廣泛用作軟體和系統的配置檔案。這裡簡要介紹一下QT下如何來解析XML檔案。 原始碼: xml_reader.h #ifndef XML_READER_H #define XML_RE

    javaDOM解析xml檔案

    本文介紹瞭如何利用DOM(即Document Object Model文件物件模型)解析xml檔案。 首先有一個xml檔案: <?xml version=\"1.0\" encoding=\"UTF-8\" ?> <User> <city

    Qt讀寫xml檔案

    1 概述     Qt中解析XML檔案有多種方法,參考資料[1]使用QXmlStreamReader類來讀取並解析xml檔案,而參考資料[2]則使用QDomDocument類來解析xml檔案。 2 QDomDocument     參考資料[2][3][4]都給出了QDom

    Java使用DOM方法解析XML檔案

    Java中使用DOM方法解析XML檔案 1、簡介 XML現在已經成為一種通用的資料交換格式,平臺的無關性使得很多場合都需要用到XML,本部落格將介紹用DOM方法解析XML檔案的方法,DOM解析是將XML檔案全部載入到記憶體,組裝成一顆DOM樹,然後通過節點以及節點之間的關係來解析XM

    Python3解析XML檔案並存入Excel表

    1. XML檔案部分資料如下: <?xml version='1.0' encoding='UTF-8'?> <nvd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://

    java解析xml檔案的五種常見方法:DOM4J,dom,pull,SAX,Jdom

    package com.zhidi.dom4jtest; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import or

    在java專案如何利用Dom4j解析XML檔案獲取資料

    在以前的學習.net時經常會遇到利用配置檔案來解決專案中一些需要經常變換的資料,比如資料庫的連線字串兒等。這個時候在讀取配置檔案的時候,我們通常會用到一個雷configuration,通過這個類來進行

    Android使用pull解析xml檔案

    Android解析xml檔案的時候,自己推薦是使用pull的方式來解析xml資原始檔,pull方式又有兩種,分別是XmlPullParser和XmlResourceParser兩種。下面來分別介紹。 一: XmlPullParser方式進行佈局解析。

    XML:使用DOM技術解析xML檔案的城市,實現select級聯選擇

    <?xml version="1.0" encoding="utf-8"?> <china> <province name="北京"> <city>東城區</city> <city>

    Android 使用Pull解析XML檔案

    解析XML檔案是非常常用的功能,在Android客戶端中,經常與伺服器通訊都需要xml檔案的支援,我們這裡介紹一個 簡單的xml檔案的解析,就是使用android中的pull方法進行解析。在java中,有dom解析和sax解析,這個pull解析有些類 似於sax解析,他也是

    Qt淺談之二十八解析XML檔案

    一、簡介         QtXml模組提供了一個讀寫XML檔案的流,解析方法包含DOM和SAX。DOM(Document ObjectModel):將XML檔案表示成一棵樹,便於隨機訪問其中的節點,但消耗記憶體相對多一些。SAX(Simple APIfor XML):一

    java解析xml檔案儲存資料庫

    package com.ziyun56.chpz.service.poi.util; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Docu

    Java上傳且後臺解析XML檔案

    後臺程式碼: import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.InputStreamReader; import javax.

    利用dom4j-1.6.1解析xml檔案

    1.先看xml的文件裡面的格式 2.main裡面,就是一個按鈕新增點選事件,然後通過工具類來解析 3.工具類裡面的程式碼,這裡我在xml中去掉了部分屬性,你可以自己設定一下,然後重新設定就好了 4.最後在activity中就可以自己查看了,我這裡是直接返回了一

    java後臺解析XML檔案

    解析XML檔案分為兩種: 1、DOM(Document Object Model) 2、SAX(Simple API for XML) DOM是基於XML文件樹結構的解析,SAX是基於事件流的解析。 我用到的是SAX解析>> 一、XML檔案 <?xml

    用JDOM解析XML檔案時如何解決中文問題?如何解析

    1 import javax.xml.parsers.DocumentBuilder; 2 import javax.xml.parsers.DocumentBuilderFactory; 3 import javax.xml.transform.OutputKeys; 4 import jav

    Java:簡單的解析XML檔案之使用DOM解析

    XML簡介 要理解XML,HTML等格式,先來理解文件物件模型DOM    根據 DOM,HTML 文件中的每個成分都是一個節點,這些節點組成了一棵樹。DOM 是這樣規定的:整個文件是一個文件節點每個 HTML 標籤是一個元素節點包含在 HTML 元素中的文字是文字節點每一個 HTML 屬性是一個屬性節

    java w3c解析xml檔案,獲取指定節點內容,讀取外部配置檔案

    原始碼: package com.ys.adage.utils; import com.ys.adage.message.CodeObjectResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.

    使用QDomDocument的setContent解析XML檔案報錯的解決方案

    可能的錯誤: 1、使用QDomDocument建立根節點時,使用了諸如:rootNode.setAttribute(“ProjName”,fileName);或者rootNode.setAttribute(“Version”,“2.0”);等等,根節點不能帶屬性 2、create

    解析.xml檔案

    有個第三方的包,用來解析.xml檔案比較方便,它是DOM4J。由於是第三方的,所以要使用它就要先下載,幷包含進來。步驟: 1.開啟dom4j官網,這裡下載最新版dom4j-2.1.1.jar.   2.新建資料夾lib. 3.把下載好的dom4j.jar放到lib資料夾裡面。