xml作為一種重要的檔案格式,應用面非常之廣。從asp.net的web.config,到android的頁面設計開發,webservice通訊等。有時候難免需要我們通過程式進行建立與解析,最近剛完成乙個c++專案,就需要讀取xml配置檔案,關於xml解析器的選擇很多,可以參考:
個人比較喜歡apache的開源專案,所以使用的是:xerces。它的使用方法,其實官方上已經有很多demo,詳見:個人覺得domcount比較實用,下面分享一下我的個人實踐。通過dom方式讀取xml中指定節點的屬性及文字值。
開發環境:visual studio 2013
首先,編譯xerceslib工程,得到xerces-c_3_1d.dll,xerces-c_3d.lib兩個檔案,其次需要在目標工程新增這2個檔案,以及相應的標頭檔案,然後是一點配置,接下來就是編碼。
下面詳細分步進行:
1.vs 2013 開啟xerces-c-3.1.2\projects\win32\vc12\xerces-all\xerces-all.sln
選中xerceslib->右擊->編譯
2.複製xerces-c-3.1.2\build\win32\vc12\debug資料夾下的xerces-c_3_1d.dll,xerces-c_3d.lib檔案到目標工程的編譯輸出目錄下(有編譯過一次才有),如:~\ debug\ 下面。
3.複製xerces-c-3.1.2下的src資料夾到目標工程下。
4.配置include directories 增加.\src,
配置dependencies 增加xerces-c_3d.lib,library directories 增加$(outdir)(即編譯輸出目錄)
2-4步是所有呼叫動態庫的通用配置方法,如果明白其中的原理,其實可以靈活配置。
xml檔案內容如下:
<?xml version="5.開始實現編碼。1.0" encoding="
utf-8
"?>"1
">test11"2
">test12
"1">test21"2
">test31
"1">test31"2
">test32
5.1包含標頭檔案
1 #include 2 #include 3 #include 4 #include5.2初始化環境
15.3載入xml檔案try4
catch (const xmlexception&tocatch)
8///
9 xercesdomparser *parser = new
xercesdomparser();
10 parser->setvalidationscheme(xercesdomparser::val_always);
11 parser->setdonamespaces(true); //
optional
1213 errorhandler* errhandler = (errorhandler*) new
handlerbase();
14 parser->seterrorhandler(errhandler);
15.4開始解析try4
catch (const xmlexception&tocatch)
11catch (const domexception&tocatch)
18catch
(...)
1 domdocument *doc = parser->getdocument();5.5 找對應節點值與屬性2 domelement *root = doc->getdocumentelement();//
讀取根節點
1 domnode *dn=root;下面是findchildnode函式的**2 dn = findchildnode(dn, "
child
");//
查詢child子節點
3for (dn = dn->getfirstchild(); dn != 0;dn = dn->getnextsibling())
4 ;
1415}16
}17 xmlplatformutils::terminate();//
釋放環境
1 domnode* findchildnode(domnode *n, char *nodename)5.6 記得釋放環境2 11}12
}13catch (const xmlexception&tocatch)
1420
return0;
21 }
xmlplatformutils::terminate();1.輸出結果為
對應節點值為:test11總結:
C 讀取 讀取XML
讀取xml到listbox combobox 1,知識需求 1 訪問xml檔案的兩個基本模型 一,dom模型 使用dom的好處在於它允許編輯和更新xml文件,可以隨機訪問文件中的資料,可以使用xpath查詢,但是,dom的缺點在於它需要一次性的載入整個文件到記憶體中,對於大型的文件,這會造成資源問題...
使用c 如何讀取xml檔案
xmlreader和xmltextreader類定義在system.xml名字空間中。xmltextreader類源於xmlreader類。xmltextreader類可用來讀取xml文件。此類的read方法讀取此文件,直到其節點結束。在這篇文章裡,將演示如何使用xmltextreader類來讀取乙...
Xerces使用指南
xml中元素和結概念的解釋 對於xslt處理器來看,樹 就是要使用xslt轉換的xml原文件 中的元素,屬性,名字空間,注釋,文字內容,處理指令,還有整個文件 即看成根節點 這7種都是節點。那麼元素節點僅僅是其中的一種。簡單的說元素節點就是使用用左右尖括號 如 的那個元素的節點。比如下面的xml文件...