Qt XML讀取寫入操作
XML(eXtensible Markup Language,可擴充套件標記語言)是普通用於資料交換和資料儲存的一種多用途文字檔案格式;
SVG(可標量向量圖形)XML格式,QtSvg模組提供了可用於載入並呈現SVG影象的類;
MathML(數學標記語言)XML格式的繪製文件,可以使用Qt Solution中的QtMmlWidget操作;
對於一般的XML資料處理,Qt提供了QtXml模組,QtXml提供了三種不同的應用程式介面來讀取XML文件:
1、QXmlStreamReader
用於讀取格式良好的XML文件的快速解析器,該類最快且最易於使用,並提供了與其他Qt相容的應用程式程式設計介面,很適用於編寫單通道解析器;
下圖是QXmlStreamReader的記號:
如下XML文件:
<body>
<quoto>My test XML</quoto>
</body>
QXmlStreamReader解析這個文件,readNext()每次讀取一個元素都會生成一個新記號,用getter函式可以讀取更多資訊:
遍歷整個文件會有如下輸出:
StartDocument
StartElement(name()=="body")
StartElement(name()=="quoto")
Characters(text()=="My test XML")
EndElement(name()=="quoto")
EndElement(name()=="body")
QXmlStreamReader讀取如下的XML檔案
<?xml version="1.0"?>
<bookindex>
<entry term="sidebearings">
<page>10</page>
<page>34-35</page>
<page>307-308</page>
</entry>
<entry term="subtraction">
<entry term="of pictures">
<page>115</page>
<page>244</page>
</entry>
<entry term="of vectors">
<page>9</page>
</entry>
</entry>
</bookindex>
通常是按層遍歷方式,下面來從程式碼體驗一下:
XmlStreamReader::XmlStreamReader(QTreeWidget*tree)
{
treeWidget=tree;
}
boolXmlStreamReader::readFile(constQString&fileName)
{
QFilefile(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text)){
std::cerr<<"Error:Cannotreadfile"<<qPrintable(fileName)
<<":"<<qPrintable(file.errorString())
<<std::endl;
returnfalse;
}
qDebug()<<QString("readsuccess");
reader.setDevice(&file);
reader.readNext();
while(!reader.atEnd()){
if(reader.isStartElement()){
if(reader.name()=="bookindex"){
readBookindexElement();
}else{
reader.raiseError(QObject::tr("Notabookindexfile"));
}
}else{
reader.readNext();
}
}
file.close();
if(reader.hasError()){
std::cerr<<"Error:Failedtoparsefile"
<<qPrintable(fileName)<<":"
<<qPrintable(reader.errorString())<<std::endl;
returnfalse;
}elseif(file.error()!=QFile::NoError){
std::cerr<<"Error:Cannotreadfile"<<qPrintable(fileName)
<<":"<<qPrintable(file.errorString())
<<std::endl;
returnfalse;
}
returntrue;
}
voidXmlStreamReader::readBookindexElement()
{
reader.readNext();
while(!reader.atEnd()){
if(reader.isEndElement()){
reader.readNext();
break;
}
if(reader.isStartElement()){
if(reader.name()=="entry"){
readEntryElement(treeWidget->invisibleRootItem());
}else{
skipUnknownElement();
}
}else{
reader.readNext();
}
}
}
voidXmlStreamReader::readEntryElement(QTreeWidgetItem*parent)
{
QTreeWidgetItem*item=newQTreeWidgetItem(parent);
item->setText(0,reader.attributes().value("term").toString());
reader.readNext();
while(!reader.atEnd()){
if(reader.isEndElement()){
reader.readNext();
break;
}
if(reader.isStartElement()){
if(reader.name()=="entry"){
readEntryElement(item);
}elseif(reader.name()=="page"){
readPageElement(item);
}else{
skipUnknownElement();
}
}else{
reader.readNext();
}
}
}
voidXmlStreamReader::readPageElement(QTreeWidgetItem*parent)
{
QStringpage=reader.readElementText();
if(reader.isEndElement())
reader.readNext();
QStringallPages=parent->text(1);
if(!allPages.isEmpty())
allPages相關推薦
Qt XML讀取寫入操作
XML(eXtensible Markup Language,可擴充套件標記語言)是普通用於資料交換和資料儲存的一種多用途文字檔案格式; SVG(可標量向量圖形)XML格式,QtSvg模組提供了可用於載入並呈現SVG影象的類; MathML(數學標記語言)
0018.scala檔案的讀取寫入操作程式碼
object Source extends scala.AnyRef { val DefaultBufSize : scala.Int = { /* compiled code */ } def stdin : scala.io.BufferedSource = { /* compiled cod
QT 實現 讀取 增加 刪除 實時操作xml
include "operatexml.h" include OperateXml::OperateXml(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); readXML(); load(); connect(ui.pushBut
C# 操作地址 從內存中讀取寫入數據(初級)
mode .com 陽光 pen bsp api bject str ddr 本示例以植物大戰僵屍為例, 實現功能為 每1秒讓陽光刷新為 9999.本示例使用的遊戲版本為 [植物大戰僵屍2010年度版], 使用的輔助查看內存地址的工具是 CE. 由於每次啟動遊戲, 遊戲
Java POI 操作Excel(讀取/寫入)
del sep ces 價值 name fill ber 路徑 stc pom.xml依賴: <dependency> <groupId>org.apache.poi</groupId>
關於Python中讀取寫入檔案並進行檔案與使用者互動的操作
一、提前知識點 在python中是同樣和其他語言一樣可以進行檔案的讀取寫入操作,值得注意的是,Python中開啟檔案讀取的方式有幾種,分別是以下幾種: 1 f = open('username.txt') 2 first_line = f.readline() 3 print('fi
Qt XML檔案的建立、讀取介紹以及“重寫XML不能覆蓋原內容問題”解決
簡介XML XML(Extensible Markup Language,可擴充套件標記語言),是一種類似於HTML的標記語言,設計目的是用來傳輸資料,而不是顯示資料。XML的標籤沒有被預定義,使用者需要在使用時自行進行定義。XML是W3C(全球資訊網聯盟)的推薦標準。相對於資料庫表格的二維
C++:txt檔案的讀取、寫入操作研究
1. 讀取txt檔案的內容
QT中讀取XML檔案三種方式 的例項
第一部分:QXmlStreamReader XML(eXtensible Markup Language)是一種通用的文字格式,被廣泛運用於資料交換和資料儲存(雖然近年來 JSON 盛行,大有取代 XML 的趨勢,但是對於一些已有系統和架構,比如 WebService,由於歷史原因,仍舊會繼
Verilog十大基本功2(testbench的設計 檔案讀取和寫入操作 原始碼)
需求說明:Verilog設計基礎 內容 :testbench的設計 讀取檔案 寫入檔案 來自 :時間的詩 十大基本功之 testbench 1. 激勵的產生 對於 testbench 而言,埠應當和被測試的 module 一一對應。 埠分
基於boost的ini 檔案讀取/列舉/寫入操作
[setting] key1=1 key2=hello 上面是ini檔案的內容, 執行如下程式碼: #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/ini_par
java中的檔案操作:讀取寫入byte[]位元組流、string字串、list列表
全棧工程師開發手冊 (作者:欒鵬) java中檔案操作:讀取檔案成位元組流,將位元組流寫入檔案,按行讀取檔案成字串列表,將字串列表儲存成檔案,讀取檔案成字串,將字串寫入檔案。 主
nodejs-操作檔案系統讀取寫入檔案
我們通過fs這個模組來對檔案系統進行操作,對於檔案系統操作一般都有同步、非同步方法,兩者區別,同步等有返回結果時候,在繼續執行後面的程式碼,非同步是不等返回結果,直接執行後面的程式碼,待有返回結果時候,通過回撥函式來做出處理。一般同步方法函式名在非同步方法名字後面加Sync
java檔案建立、刪除、讀取、寫入操作大全
複製檔案 1.以檔案流的方式複製檔案 public void copyFile(String src,String dest) throws IOException...{ FileInputStream in=new FileInputStream(s
C#解析讀取XML檔案,並且對XML檔案進行操作
如果不懂XML文件結構,請點選移步這裡 在綜合搜尋了網上的文章之後發現,有很多文章的講解博主看的一知半解,並且有些方法已經找不到了,所以就有了自己整理一下學習成果,同時通過部落格共享成果 目前還在學習中,先佔坑,後續補上 經過昨天的實驗和測試,補上C#XML的資訊讀取操
ini檔案操作(讀取/寫入)
示例: // iniText.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include &l
QT DOM方式寫入xml檔案
依賴的標頭檔案: #include <QFile> #include <QString> #include <QtXml> #include <QDomDocument> #include <QDateTime>
Qt讀取/寫入Excel資料--QAxObject
效果圖: QT += core gui axcontainer CONFIG += qaxcontainer greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = fast
XML使用DOM操作
ber 類型 iphone document trac ktr 編碼 ner ipa DOM 文檔對象模型 基於XML文檔樹結構解析 適用於多次訪問的xml文檔 特點:比較消耗資源 1).Document對象 NodeList getElement
文本與集合的讀取寫入方式總結
void space -1 方式 static div throws col arraylist //1.從文本中讀取並添加到集合,按行讀取 1 public static void main(String[] args) throws IOException { 2