C++利用TinyXML讀取XML文件

TinyXML是什么?
? ? ? ?TinyXML是一個輕量級的C++ XML解析器,它提供了一種簡單的方法來解析和操作XML文檔。TinyXML被設計為易于使用和集成到C++項目中,并且非常適合處理小型XML文件。

?以下是TinyXML的一些主要特點和優點:

輕量級: TinyXML的設計目標之一是保持代碼庫的小巧簡潔,因此它非常適合用于嵌入式系統或具有資源限制的環境。

簡單易用: TinyXML提供了簡單直觀的API,使得解析和操作XML文檔變得容易。它的API設計使得開發人員可以快速上手并完成XML處理任務。

跨平臺性: TinyXML是跨平臺的,可以在各種操作系統上運行,包括Windows、Linux和Mac OS等。

開源: TinyXML是開源的,可以在許可證允許的情況下免費使用和修改。

支持XML解析和生成: TinyXML支持解析XML文檔,并且可以將XML數據寫入到文件或內存中。

適用于小型XML文件: 盡管TinyXML可以解析和處理XML文件,但它更適用于處理小型XML文件,因為它的設計目標之一是保持簡潔和高效。

? ? ? ?雖然TinyXML功能不如一些更復雜的XML庫,但它的簡單性和輕量級使得它成為處理小型XML任務的良好選擇。

下載:TinyXML download | SourceForge.net

打開下載后的文件,將下面六個文件復制,兩個頭文件,四個cpp文件

下面我會通過靜態庫的形式調用TinyXML庫。

用VS新建一個空白工程

將剛剛復制的六個文件放入該工程中

修改項目屬性,改為lib靜態庫

點擊生成解決方案,提示成功即可

打開工程目錄,并返回上一級

找到X64文件

新建一個文件夾,命名為lib, 復制.lib文件,放入lib文件夾中

而后將下載的XML庫文件內的兩個頭文件單獨復制出來,放到一個新建的文件夾include內

最后我們現在就會得到兩個文件夾

現在我們新建一個工程,在VC++目錄內修改包含目錄和庫目錄

包含目錄為剛剛我們新建的include文件夾

庫目錄為剛剛新建的Lib文件夾

最后在“鏈接器“---”輸入“---附加依賴項

將附加依賴項改為我們lib文件夾內的 .lib文件的絕對路徑

比如說:Z:\WorkPlace\test-0001\lib\test-0001.lib

代碼測試:

測試所需的文件:

鏈接: https://pan.baidu.com/s/1uV3W7z2C3IDYBubkV2ZC_Q?pwd=dnkm 提取碼: dnkm 復制這段內容后打開百度網盤手機App,操作更方便哦?
--來自百度網盤超級會員v5的分享

#include "tinyxml.h"
#include <iostream>int main() {//讀取XML文件TiXmlDocument doc("Z:\\XML1.xml"); // if (!doc.LoadFile()) {std::cerr << "Failed to load file" << std::endl;return -1;}TiXmlElement* root = doc.RootElement(); // 獲取根元素if (!root) {std::cerr << "Failed to find root element" << std::endl;return -1;}// 直接獲取<params>元素TiXmlElement* params = root->FirstChildElement("params");if (params) {// 遍歷<params>下的所有子元素for (TiXmlElement* param = params->FirstChildElement(); param; param = param->NextSiblingElement()) {const char* paramName = param->Value();  // 獲取元素名稱const char* paramValue = param->GetText(); // 獲取元素的文本內容// 使用printf輸出printf("%s: %s\n", paramName, paramValue);}}else {std::cerr << "No <params> element found" << std::endl;}return 0;
}

測試結果:

至此,我們調用TinyXML庫讀取XML文件的過程就結束了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14437.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OSPF問題

.ospf 選路 域內 --- 1類&#xff0c;2類LSA 域間 --- 3類LSA 域外 --- 5類&#xff0c;7類LSA --- 根據開銷值的計算規則不同&#xff0c;還分為類型1和類型2 ospf 防環機制 區域內防環&#xff1a;在同一OSPF區域內&#xff0c;所有路由器通過交換鏈路狀態通告&#xff…

VUE面試題(3)--vue常見面試題

1.vue優點 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。 …

226.翻轉二叉樹

翻轉一棵二叉樹。 思路&#xff1a; 指針做交換 用遞歸&#xff08;前序or后序&#xff0c;中序不行&#xff09; 前序&#xff1a;中左右 遍歷到“中”的時候&#xff0c;交換它的左右孩子 然后分別對它的左孩子和右孩子使用“交換函數”&#xff08;定義的&#xff09;&a…

【網絡版本計算器的實現】

本章重點 理解應用層的作用, 初識HTTP協議理解傳輸層的作用, 深入理解TCP的各項特性和機制對整個TCP/IP協議有系統的理解對TCP/IP協議體系下的其他重要協議和技術有一定的了解學會使用一些分析網絡問題的工具和方法 ?注意!! 注意!! 注意!! 本課是網絡編程的理論基礎.是一個服務…

零基礎學Java第二十二天之迭代器 Iterator

迭代器 Iterator 的理解和相關集合 使用 1、理解 迭代器&#xff08;Iterator&#xff09;是設計模式中的一種&#xff0c;它允許程序員遍歷容器&#xff08;例如列表、集合等&#xff09;中的元素&#xff0c;而無需了解容器底層的實現細節。在編程中&#xff0c;迭代器提供了…

?第18章:JDK8-17新特性

1. 新特性概述 > 角度1&#xff1a;新的語法規則 &#xff08;多關注&#xff09;比如&#xff1a;lambda表達式、enum、annotation、自動拆箱裝箱、接口中的默認方法和靜態方法、switch表達式、record等> 角度2&#xff1a;增加、過時、刪除API比如&#xff1a;新的日期…

《子數整數》

描述 對于一個五位數a1?a2?a3?a4?a5?&#xff0c;可將其拆分為三個子數&#xff1a; sub1?a1?a2?a3? sub2?a2?a3?a4? sub3?a3?a4?a5? 例如&#xff0c;五位數20207可以拆分成 sub1?202 sub2?020(20) sub3?207 現在給定一個正整數K&#xff0c;要求你編程求…

【系統架構師】-論文-系統安全性與保密性設計

1、摘要: 2018 年初&#xff0c;我所在的公司為一票務公司開發開票業務平臺的建設。我在該項目中擔任系統架構設計師的職務&#xff0c;主要負責設計平臺系統架構和安全體系架構。該平臺以采用 B/S 架構服務用戶&#xff0c;采用”平臺應用”的模式解決現有應用單機獨立開票的模…

【YOLOv5/v7改進系列】替換激活函數為SiLU、ReLU、LeakyReLU、FReLU、PReLU、Hardswish、Mish、ELU等

一、導言 激活函數在目標檢測中的作用至關重要&#xff0c;它們主要服務于以下幾個關鍵目的&#xff1a; 引入非線性&#xff1a;神經網絡的基本構建塊&#xff08;如卷積層、全連接層等&#xff09;本質上是線性變換&#xff0c;而激活函數通過引入非線性&#xff0c;使得網絡…

urllib3 發起https請求時報錯 certificate verify failed

情況描述 近期需要訪問https的一個API接口同步數據&#xff0c;在辦公主機完成urllib3初步的測試以后&#xff0c;到測試環境驗證發現無法請求&#xff0c;報錯&#xff1a; 提示&#xff1a;解決辦法可以直接到第四節查看 一、提示 SSL 認證失敗 OpenSSL.SSL.Error: [(SSL …

保安維穩,四信以科技構筑高速公路安全智慧防線

近日&#xff0c;廣東梅大高速發生嚴重塌方事故&#xff0c;造成了嚴重的人員傷亡和財產損失。這一事件在公眾心中敲響了安全的警鐘&#xff0c;再次引起了公眾對于交通設施運營安全性的重點關注。 國務院安委會辦公室和國家防災減災救災委員會辦公室等主管機構先后印發緊急通知…

Spring Security整合Gitee第三方登錄

文章目錄 學習鏈接環境準備1. 搭建基本web應用引入依賴ThirdApp啟動類創建index頁面application.yml配置訪問測試 2. 引入security引入依賴ProjectConfig訪問測試 第三方認證簡介注冊gitee客戶端實現1引入依賴application.yml配置文件創建index.html頁面啟動類InfoControllerPr…

【數學建模】儲藥柜的設計

2014高教社杯全國大學生數學建模競賽D題目 題目描述 儲藥柜的結構類似于書櫥&#xff0c;通常由若干個橫向隔板和豎向隔板將儲藥柜分割成若干個儲藥槽(如圖1所示)。為保證藥品分揀的準確率&#xff0c;防止發藥錯誤&#xff0c;一個儲藥槽內只能擺放同一種藥品。藥品在儲藥槽…

Python閉包探索,釋放函數記憶的秘術

引言 hello&#xff0c;大家好&#xff0c;我是一點&#xff0c;專注于Python編程&#xff0c;如果你也對感Python感興趣&#xff0c;歡迎關注交流。 希望可以持續更新一些有意思的文章&#xff0c;如果覺得還不錯&#xff0c;歡迎點贊關注&#xff0c;有啥想說的&#xff0c;可…

docker搭建gitlab及默認密碼修改及配置修改

推薦官方文檔 https://docs.gitlab.com/17.0/ee/install/docker.html 我使用的是docker run的方式&#xff0c;官方文檔后面有docker-compose、swarm、k8s的部署文檔 版本說明 1&#xff1a;可以部署gitlab-ce社區版和gitlab-ee企業版&#xff0c;然后&#xff0c;鑒于是個人…

Mysql總結2

Mysql慢優化 在mysql中&#xff0c;long_query_time的值為10&#xff0c;當sql語句執行的時間超過這個數值時&#xff0c;則會被記錄到慢查詢日志中。 Mysql語句查詢流程 1、客戶端發送sql語句到服務端&#xff1b; 2、服務端查看是否打開了緩存&#xff0c;若緩存打開&…

AIGC繪畫設計基礎-建筑設計應用

一、AI及AIGC 對于AI大家都不陌生&#xff0c;但是AIGC這個概念好多人其實不大清楚。“AI”是指人工智能技術本身&#xff0c;而“AIGC”是指基于人工智能技術而生成的內容。 生成式人工智能——AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;&…

近鄰算法詳解

近鄰算法&#xff08;Nearest Neighbor Algorithm&#xff09;&#xff0c;也稱為K-近鄰算法&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;&#xff0c;是一種基本的分類和回歸方法。它的工作原理非常直觀&#xff1a;通過測量不同特征點之間的距離來進行預測。…

使用CommandLine庫創建.NET命令行應用

CommandLine是一個.NET庫&#xff0c;用于創建命令行應用程序。它提供了一種簡單的方法來解析命令行參數&#xff0c;并且可以幫助您構建一個功能強大的命令行界面。在本文中&#xff0c;我們將介紹如何使用CommandLine庫創建.NET命令行應用程序。 1. 背景 在.NET開發中&#…