例子 xml 內容:
<?xml version="1.0" encoding="utf-8" ?>
電視劇集電影
以下為示例**,buffer 中儲存著上面例子的 xml 內容:
[cpp]
view plain
copy
void
cxmldlg::par***ml()
; if
( mbstoutf8( utf8,
sizeof
(utf8), buffer ) <= 0 )
// 此函式見我之前關於 tinyxml 的文章
return
; tixmldocument doc;
doc.parse(utf8);
tixmlelement* databaseelement = 0;
tixmlelement* listelement = 0;
tixmlelement* channelelement = 0;
tixmlhandle dochandle( &doc );
databaseelement = dochandle.firstchild( "config"
).firstchild(
"database"
).toelement();
assert( databaseelement );
// 取得字串屬性的內容
const
char
* ip = databaseelement->attribute(
"ip"
);
// 取得整型屬性的值
intport = 0;
databaseelement->queryintattribute("port"
, &port );
intcount = 0;
char
content[32] = ;
listelement = dochandle.firstchild( "config"
).firstchild(
"list"
).toelement();
assert( listelement );
for( channelelement = listelement->firstchildelement(
"channel"
); channelelement; channelelement = channelelement->nextsiblingelement(
"channel"
) )
} 注意:
1) xml 內容中如果有中文,必須轉成 utf-8格式,否則可能會出問題,比如此例中,"電視劇集"的中文 gb2312 編碼會影響到後面的 "",導致取這個節點的 text 時,得到的結果是: "電視劇集",而取下乙個節點時將找不到節點。
2)使用 tixmldocument 與 tixmlhandle 的區別: 一次取多級子節點元素時,當某一級節點不存在,用 doc (tixmldocument) 會出現異常,程式崩潰,而用 dochandle (tixmlhandle) 則不會有異常。
比如:databaseelement = doc.firstchildelement( "conf" )->firstchildelement( "database" ); // 異常,崩潰
databaseelement = dochandle.firstchild( "conf" ).firstchild( "database" ).toelement(); // 不會異常,databaseelement 為 0
databaseelement = dochandle.firstchildelement( "conf" ).firstchildelement( "database" ).toelement(); // 不會異常,databaseelement 為 0
後兩種寫法的效果是一樣的。
TinyXML生成xml檔案
注意 insertendchild與linkendchild區別 insert 系列的函式插入的是結點的副本 包括所有子結點 而 linkendchild 插入的就是你建立的物件。例子 xml 內容 電視劇集電影 寫法一 cpp view plain copy void cxmldlg makexm...
TinyXML讀寫XML檔案
最近要用c 來讀寫配置檔案,和自己的需要記錄的資料,這這東西比存在資料庫裡面好用,但是唯一不爽的一點是可維護性太差,修改欄位後太難處理了,沒有php拿到引數方便,可以直接以字串來索引查詢引數的值,只能以相對位置,先拿到根目錄,然後再根據相對位置查詢。這個東西的好處是可以直接拿 碼用,只有6個檔案,放...
使用TinyXML讀 寫XML檔案
1 tinyxml 引用網上的原話 tinyxml是目前非常流行的一款基於dom模型的xml解析器,簡單易用且小巧 玲瓏,非常適合儲存簡單資料,配置檔案,物件序列化等資料量不是很大的操作。支援對xml的讀取和修改,不直接支援xpath,需要借助另乙個相關的類庫tinyxpath才可以支援xpath ...