1. 程式人生 > >Qt讀寫xml格式字串

Qt讀寫xml格式字串

Xml 簡介

W3CXML教程
XML是ExtensibleMarkup Language的縮寫,即可擴充套件標記語言。它是一種用來建立的標記的標記語言。使用XML標記語言可以做到資料或資料結構在任何程式語言環境下的共享。
XML 被設計用來傳輸和儲存資料
HTML 被設計用來顯示資料。
XML解析器是讀取XML文件並提供對文件內容的訪問的軟體模組

Qt 讀取 XML 文件的方法

A QXmlStreamReader:一種快速的基於流的方式訪問良格式 XML 文件,特別適合於實現一次解析器(所謂“一次解析器”,可以理解成我們只需讀取文件一次,然後像一個遍歷器從頭到尾一次性處理 XML 文件,期間不會有反覆的情況,也就是不會讀完第一個標籤,然後讀第二個,讀完第二個又返回去讀第一個,這是不允許的);這種方法是通過呼叫readNext()函式實現的,可以讀取下一個記號,然後返回一個記號型別。
B DOM(Document Object Model):將整個 XML 文件讀入記憶體,構建成一個樹結構,允許程式在樹結構上向前向後移動導航,這是與另外兩種方式最大的區別,也就是允許實現多次解析器(對應於前面所說的一次解析器)。DOM 方式帶來的問題是需要一次性將整個 XML 文件讀入記憶體,因此會佔用很大記憶體;
C SAX(Simple API for XML):提供大量虛擬函式,以事件的形式處理 XML 文件。應用程式必須提供處理器(回撥函式) 來從解析器獲得所謂XML事件。

Qt生成 XML 文件方法

A QXmlStreamWriter與QXmlStreamReader相對應。XML流的方法
B DOM 方式,首先在記憶體中生成 DOM 樹,然後將 DOM 樹寫入檔案。
C 純手工生成 XML 文件。

Qt中DOM的使用

//xml中的XML說明對應QDomProcessingInstruction

//xml中的元素對應QDomElement類

//xml中的屬性對應QDomArr類

//xml中的文字內容對應QDomText類

//Qt中,所有的Dom節點,比如說明,元素,屬性和文字等,都使用QDomNode來表示

//文件本身用 QDomDocument 類表示
//訪問XML檔案 // 新建QDomDocument類物件,它代表一個XML文件 QDomDocument doc; // 定義一個檔案物件 QFile file("../myDOM1/my.xml"); //setContent()函式設定整個文件內容,將xml文件內容解析為一個DOM樹 doc.setContent(&file); // 獲得doc的第一個結點,即XML說明 QDomNode firstNode = doc.firstChild(); //若換為lastChild() 指的是根元素 // 返回根元素
QDomElement docElem = doc.documentElement(); // 返回根節點的第一個子結點 QDomNode n = docElem.firstChild(); //lastChild()獲取最後一個節點 輸出的是book03 // 轉到下一個兄弟結點 n = n.nextSibling(); //使用previousSibling訪問前一個節點 //建立XML檔案 // 新增處理指令即XML說明 QDomProcessingInstruction instruction; instruction = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(instruction); //新增在最後 // 新增元素 QDomElement book = doc.createElement(QString("圖書")); // 新增屬性及其值 QDomAttr id = doc.createAttribute(QString("編號")); id.setValue(QString("1")); book.setAttributeNode(id); //文字及其文字值 QDomText text; text = doc.createTextNode(QString("Qt"));

Qt中SAX的使用

SAX(simple API for XML)為XML解析器提供了一個基於事件的標準介面。在Qt中支援SAX2不支援java中的SAX1

Qt中XML流的使用

Qt中用了兩個類來讀取和寫入XML文件( QXmlStreamWriter與QXmlStreamReader),前面講到過在讀取XML文件時是通過readNext()函式獲取下一個記號,返回的是記號
型別,它由 QXmlStreamReader::TokenType 定義,具體記號型別如圖:

//QXmlStreamReader 解析文件

    QFile file("../myXmlStream/my.xml");

    QXmlStreamReader reader;

    // 設定檔案,這時會將流設定為初始狀態

    reader.setDevice(&file);

    while (!reader.atEnd()) {

        // 讀取下一個記號,它返回記號的型別

        QXmlStreamReader::TokenType type = reader.readNext();  //所有取值表17-6 P417

        // 下面便根據記號的型別來進行不同的輸出

        if (type == QXmlStreamReader::StartDocument)



        if (type == QXmlStreamReader::StartElement) { //元素的起始



            if (reader.attributes().hasAttribute("id"))//如果有屬性為ID的元素



        }

        if (type == QXmlStreamReader::EndElement)   //元素的截止



        if (type == QXmlStreamReader::Characters && !reader.isWhitespace()) //文字內容



    }

//QXmlStreamWriter 建立文件

    QFile file("../myXmlStream/my2.xml");

    QXmlStreamWriter stream(&file);

    //設定自動格式,會自動換行和新增縮排

    stream.setAutoFormatting(true);

    //自動新增首行的XML說明<?xml version="1.0" encoding="UTF-8"?>

    stream.writeStartDocument();

    //新增元素

    stream.writeStartElement("book"); //起始元素

    stream.writeAttribute("href", "http://qt.nokia.com/");

    stream.writeTextElement("title", "Qt Home"); //文字元素   使用這個關閉前一個開啟的元素    

    stream.writeEndElement();

    stream.writeEndDocument();

相關推薦

Qtxml格式字串

Xml 簡介 W3CXML教程 XML是ExtensibleMarkup Language的縮寫,即可擴充套件標記語言。它是一種用來建立的標記的標記語言。使用XML標記語言可以做到資料或資料結構在任何程式語言環境下的共享。 XML 被設計用來傳輸和

QtXML格式檔案(使用QDomDocument類)

簡述 XML是一種標記語言,被設計用來結構化儲存以及傳輸資訊,是一種常用的文件資料結構。 就我個人而言,Qt下讀寫XML格式檔案可以有三種方法: 一是使用純C++的rapidxml開源庫。優點是速度快,媲美strlen()的速度;缺點是處理中文比較麻煩,編碼只有ANSI格式。 二是使用Q

QTXML

QQ:609162385 一、DOM簡介 1、DOM簡介 DOM是Document Object Model的簡寫,即XML文件物件模型,是由W3C提出的一種處理XML文件的標準介面。 DOM 一次性讀入整個XML文件,在記憶體中構造為一棵樹(DOM樹)將XML檔案表示成一棵樹,便於

qtxml檔案

1、DOM方式 寫xml檔案,以QDomText方式寫,程式碼如下 QFile file("d:/test.txt"); file.open(QIODevice::WriteOnly); QDomDocument doc; QDomProcessingInstructio

python利用lxmlxml格式檔案

之前在轉換資料集格式的時候需要將json轉換到xml檔案,用lxml包進行操作非常方便。 寫xml檔案 a) 用etree和objectify from lxml import etree, objectify E = objectify.Eleme

Qt簡單xml

這裡只簡單舉例,讀寫是關聯在一起的。 xml文件的內容是: <?xml version="1.0" encoding="UTF-8"?> <fileinfo>  <filename>test</filename>  &l

Qt:QXMLStreamReader、QXMLStreamWriter,XML檔案例項

效果圖: 需求: 開啟對應格式的XML檔案,讀入到QTreewidget樹中,並能將XML檔案另存為,寫入到磁碟。 原始碼: main.cpp #include "mainwindow.h" #include <QApplication> int

Qtxml檔案

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

Qt:用Dom方式xml檔案

  網上有不少介紹Dom方式讀寫xml檔案,大部分給出的程式碼都不夠完整。這裡通過我做的的一個例子做一個完整的總結。XML檔案格式如下 <?xml version="1.0" encoding="UTF-8"?> <RootSkeletonData>

在.net中序列化xml方法的總結

port 單詞 創建 padding 在一起 sys base msd 屏幕 在.net中序列化讀寫xml方法的總結 閱讀目錄 開始 最簡單的使用XML的方法 類型定義與XML結構的映射 使用 XmlElement 使用 XmlAttribute 使用 Inner

java Parquet格式的數據 Parquet example

readline byte ble print 三種 每一個 sta cep edr import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io

c#Xml文件

引用 use 記錄 一行 tar desktop for 單個 contacts 寫入xml文件 第一種方法:使用XmlDocument類: Demo1 //通過代碼創建XML文檔 //1、引用命名空間 System.Xml

如何用pythonCSV 格式文件

文件 原理 color print 讀取 python 數據 pytho bold 工作中經常會碰到讀寫CSV文件的情況。記錄下,方便自己以後查詢並與大家一起分享: 寫CSV文件方法一: import csv #導入CSV with open("D:\eg

<轉>MatlabTIFF格式文件

tla dev its hot efi width esc 顏色 encoding 1、簡介 通常情況下,使用MATLAB做圖像處理後,使用下面的命令就可以保存處理結果為圖片。 imwrite(im,‘im.bmp‘); 而如果需要保存的圖像為single或者doub

Java:簡單的XML文件之使用DOM4J

href 使用 attr student per oop vao 節點 需要 Dom4J方式解析XML文件。dom4j是非官方提供的xml文件解析方式,因此需要去第三方下載dom4j的jar包 File file = new File("D:\\chengmuzhe\\ja

Java:使用DOM4j來實現XML文件中的屬性和元素

contact post 讀寫xml 修改屬性 sax document tel reader 內容 DOM4可以讀取和添加XML文件的屬性或者元素 讀取屬性: public static void ReadAttributes() throws DocumentExcep

Java:使用DOM4j來實現XML檔案中的屬性和元素

DOM4可以讀取和新增XML檔案的屬性或者元素 讀取屬性: public static void ReadAttributes() throws DocumentException { File file = new File("D:\\cmz\\java\\XMLTest\\Custom

Java:簡單的XML檔案之使用DOM4J

Dom4J方式解析XML檔案。dom4j是非官方提供的xml檔案解析方式,因此需要去第三方下載dom4j的jar包 File file = new File("D:\\chengmuzhe\\java\\JavaOOP6.0\\students.xml"); SAXReader reader = n

C++XML檔案(libxml2庫)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++XML檔案(使用tinyxml庫)

使用以下程式碼之前,需要下載TinyXml庫,幷包含到工程下 #include <stdio.h> #include "tinyxml.h" #include <iostream> #include <cstring> usin