使用TinyXML讀 寫XML檔案

2021-07-08 14:02:10 字數 2822 閱讀 3182

1、tinyxml

引用網上的原話:tinyxml是目前非常流行的一款基於dom模型的xml解析器,簡單易用且小巧 玲瓏,非常適合儲存簡單資料,配置檔案,物件序列化等資料量不是很大的操作。支援對xml的讀取和修改,不直接支援xpath,需要借助另乙個相關的類庫tinyxpath才可以支援xpath

。tinyxml原始碼是使用c++語言編寫的,這對於c++應用來說是很好的xml操作工具了。tinyxml附帶的文件中給出了它的類組織形式:

tixmldocument : xml文件類,它一般用於指示乙個文件物件;

tixmldeclaration:  xml標識類,也就是xml檔案第一行中標註的相關資訊;

tixmlelement:    xml節點類,這個類用來表示乙個節點;

tixmltext:      xml節點類的文字資訊類,標註了xml節點類的文字資訊;

tixmlcomment: xml的注釋資訊類,用來標識xml文件類的注釋資訊;

上述的這些類全部組織在如下的幾個檔案中,在使用這個小巧的工具的時候只需要將這4個.cpp檔案和2個.h新增到工程中,非常的方便。

xml的檔案結構一般都如下面這段內容所示,第一行表明的是xml的檔案版本,編碼方式等重要資訊。在我們自己寫xml的時候可以不寫著一行,但是為了通用性,以及後續的可修改性,最好要加上這些必要的資訊,畢竟有些xml操作工具對這些是有嚴格限定的。

abc 這一行資訊中<>標記的是乙個xml的結點,結點的名稱就是在<>中的內容,abc就是這個結點的乙個屬性了。xml的詳細檔案結構可以看xml的檔案結構說明

<?xml version="1.0" encoding="utf-8" ?>

sunsusn

22.5

建立乙個工程,然後使用上面介紹過的相關類來建立乙個xml檔案,並且寫入相關資訊到xml文件中。

#include #include #include "xml/tinyxml.h"

#include "xml/tinystr.h"

using namespace std;

int main()

執行程式就可以在c盤根目錄下找到那個命名為test.xml的xml檔案了。使用記事本或者類似的文字工具就可以檢視檔案中的內容,如果寫入成果文字的內容應該是和上面說給的一段xml內容一致了。

3、使用tinyxml讀xml檔案

有了上面寫xml的經驗,讀xml檔案相比更加的容易了。讀xml檔案相比寫xml檔案可能用的場合要更多一些。使用tinyxml讀xml可以分為以下幾個步驟:

1、建立乙個tixmldocument文件物件;

2、載入xml檔案;

3、獲取檔案根節點;

4、從根節點開始遍歷讀取。

直接使用乙個比較複雜的xml檔案來作為案例:

xml檔案比較長不直接貼出,先從結構上來分析一下要讀的這個xml檔案。第一行是xml標識資訊。然後上圖中表紅框的一對節點就是根節點了,讀取的時候找到根節點,然後再去讀取根節點下的子節點,依次進行下去就可以讀取到我們想要的資訊了。這裡我想要的資訊時存在於readingsession節點下的。

readingseassion節點下的內容前部分可以預覽一下,檔案太長不便於貼出。

3.12

302474490

nodule 00151

6333

555 -93.250000

1.3.6.1.4.1.14519.5.2.1.6279.6001.190268484503749714760575440541

true

311226

310225 309

226

下面就可以寫**了,按照我們之前分析的讀取順序:

tixmldocument doc(pfile);	//pfile表示檔案的路徑										//建立讀取xml臨時物件

bool loadok = doc.loadfile(); //載入xml檔案

if (!loadok) //載入失敗彈出提示並退出該函式

tixmlelement* root = doc.rootelement(); //xml的根節點

for (tixmlnode* specialistitem = root->firstchild("readingsession"); //對readingsession節點進行迴圈

specialistitem; specialistitem = specialistitem->nextsibling("readingsession"))

m_vsingle.push_back(single);

roi = roi->nextsibling("roi");

}unblindedreadnodule = unblindedreadnodule->nextsibling("unblindedreadnodule");

}

上述**來自於專案中的一小段原始碼,中間的有些量都是其它地方定義的,不必糾結於此,重要的是這個讀取的流程。

TinyXML讀寫XML檔案

最近要用c 來讀寫配置檔案,和自己的需要記錄的資料,這這東西比存在資料庫裡面好用,但是唯一不爽的一點是可維護性太差,修改欄位後太難處理了,沒有php拿到引數方便,可以直接以字串來索引查詢引數的值,只能以相對位置,先拿到根目錄,然後再根據相對位置查詢。這個東西的好處是可以直接拿 碼用,只有6個檔案,放...

PHP使用XMLWriter讀寫xml檔案操作詳解

公尺撲科技旗下的多個產品,需要指令碼自動生成sitemap.xml,於是重新溫習一遍php xml讀寫操作。讀寫xml的方式,主要圍繞xmlwriter和xmlreader進行,前者用於生成xml,後者則是用來讀取並解析xml 寫入 xml test xml write.php mimvp.com ...

C 使用TinyXML解析XML

xmltest.cpp是包含主函式的檔案,下面直接上 很簡單,不管怎麼樣,總算是實現了,雖然題目要求不使用外加類庫實現,過段時間等題解出來我再上來更新不加外庫實現的方法。tinyxml 163.com 中國 jsoncpp gmail.com 美國 以上是要讀取xml檔案,下面的是xmltest.c...