亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

怎么利用tinyxml操縱xml和應(yīng)該注意的問題有哪些

2020-02-24 14:38:02
字體:
供稿:網(wǎng)友

今天小編跟大家分享一下怎么利用tinyxml.html" target="_blank">xml操縱xml和應(yīng)該注意的問題有哪些,感興趣的朋友跟小編一起來了解一下吧!

在上篇博客中,大概了解了tinyxml工具的架構(gòu),那這篇博客,我們詳細講述如何利用tinyxml操縱xml。以及在操作的過程中,我們應(yīng)該注意的問題。
首先把tinyxml源文件導入自己的工程中,效果如下:?
????

? ? 實際上,直接添加文件到工程中:如下:
?


若您的系統(tǒng)是win7或office是2007以上的,添加文件這個功能是不能用的,結(jié)果是:或直接崩潰?;驔]反應(yīng)。解決方案如下:?
http://www.49028c.com/article/32996.htm
環(huán)境準備好了,那么我們開始動手操作吧。正如對數(shù)據(jù)庫表操作一樣---增刪改查。根據(jù)此邏輯,那就從增(創(chuàng)建)開始。
創(chuàng)建的格式如下:

?

?




lhy
22

?


上篇博客中,我們也介紹了tinyxml解析器中的所有的類以及類之間的關(guān)系。
創(chuàng)建上述格式的xml,代碼如下:

?

?


//創(chuàng)建一個XML的文檔對象。
TiXmlDocument *myDocument = new TiXmlDocument();
//創(chuàng)建一個根元素并連接。
TiXmlElement *RootElement = new TiXmlElement("Persons");
myDocument->LinkEndChild(RootElement);
//創(chuàng)建一個Person元素并連接。
TiXmlElement *PersonElement = new TiXmlElement("Person");
RootElement->LinkEndChild(PersonElement);
//創(chuàng)建name元素、age元素并連接。
TiXmlElement *NameElement = new TiXmlElement("name");
TiXmlElement *AgeElement = new TiXmlElement("age");
PersonElement->LinkEndChild(NameElement);
PersonElement->LinkEndChild(AgeElement);
//設(shè)置name元素和age元素的內(nèi)容并連接。
TiXmlText *NameContent = new TiXmlText("lhy");
TiXmlText *AgeContent = new TiXmlText("22");
NameElement->LinkEndChild(NameContent);
AgeElement->LinkEndChild(AgeContent);
myDocument->SaveFile("d://lhy//xml.txt");//保存到文件


只要搞清xml中節(jié)點之間的關(guān)系,創(chuàng)建不是問題。說白了就是一種輩分關(guān)系。
創(chuàng)建搞定了,但是作為C++程序猿,寫完之后,總感覺有點別扭,總感覺哪不對勁。你是否也看出其中存在的貓膩?
對了,些許的代碼中有大量的New指針。在C++中可沒有java中的垃圾回收機制,必須自己來處理這些廢棄的垃圾。但是代碼中卻沒有Delete語句?
上網(wǎng)查了資料,發(fā)現(xiàn)很多創(chuàng)建代碼中,都沒有Delete語句?難道是大家都是復制粘貼?還是tinyxml在搞怪?
我總結(jié)了以下幾點,但是最后在開發(fā)的過程中仍是疑問,但是開發(fā)的過程中,沒有出現(xiàn)問題,所以我的程序就暫時如此了。
說法一:很多文章中,都是new沒有delete,是因為tinyxml可以自動釋放,自動銷毀指針,無需開發(fā)者手動釋放。
質(zhì)疑:new出來的可以自動釋放?new出來說明是在堆上創(chuàng)建的,什么時候會自動釋放?程序結(jié)束時,自動釋放?那怎么判斷程序結(jié)束呢?(在一個模塊中如何析構(gòu)另一個模塊中的內(nèi)存區(qū)域,我們后面會詳談),所以這種說法不攻自破。
既然tinyxml中有自毀功能,那我們查詢其源代碼,發(fā)現(xiàn)果真如此,tinyxml中在析構(gòu)函數(shù)中,有相應(yīng)的指針釋放。但是并不是每個節(jié)點如此的。
源碼中的詳情:

?

?


TiXmlNode::~TiXmlNode()
{
TiXmlNode* node = firstChild;
TiXmlNode* temp = 0;
while ( node )
{
temp = node;
node = node->next;
delete temp;
}
}
void TiXmlNode::Clear()
{
TiXmlNode* node = firstChild;
TiXmlNode* temp = 0;
while ( node )
{
temp = node;
node = node->next;
delete temp;
}
firstChild = 0;
lastChild = 0;
}


我們也知道tinyxml中的類之間存在繼承關(guān)系。
那我們看tinyxml中的TixmlElement類:

?

?


TiXmlElement::~TiXmlElement()
{
ClearThis();
}
void TiXmlElement::ClearThis()
{
Clear();
while( attributeSet.First() )
{
TiXmlAttribute* node = attributeSet.First();
attributeSet.Remove( node );
delete node;
}
}


因為TixmlElement是繼承TiXmlNode.但是在TiXmlDocument中并沒有發(fā)現(xiàn)TiXmlDocument類的析構(gòu)函數(shù)。
第二種說法:TiXmlDocument對象就是這棵樹的根結(jié)點, 在一個完整的文檔中, 除了它, 其余結(jié)點必須都是它的后代, 所以TinyXml用了一個很巧妙的方法來析構(gòu)每一個結(jié)點所對應(yīng)的對象 ---- 每個結(jié)點的析構(gòu)任務(wù)都委托給了它的父親, 這樣只要保證父親被正確析構(gòu), 或者調(diào)用了父親的Clear函數(shù), 它的所有后代都會被正確的析構(gòu), 所以對整個文檔來說只要TiXmlDocument對象被正確析構(gòu)即可。
在創(chuàng)建的上述代碼中,我們發(fā)現(xiàn),所有的節(jié)點都是掛在根節(jié)點之下的。
其實這句代碼: myDocument->LinkEndChild(RootElement);使用了多態(tài)方式。類之間的關(guān)系如下:
??
并且LinkEndChild源代碼如下:它是父類TiXmlNode中的方法

?

?


TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node )
{
assert( node->parent == 0 || node->parent == this );
assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() );
if ( node->Type() == TiXmlNode::DOCUMENT )
{
delete node;
if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
return 0;
}
node->parent = this;
node->prev = lastChild;
node->next = 0;
if ( lastChild )
lastChild->next = node;
else
firstChild = node;// it was an empty list.
lastChild = node;
return node;
}


這樣的話:則只要刪除根節(jié)點,在程序中myDocument,就相當于把刪除了TiXmlNode,相當于調(diào)用了TiXmlNode的析構(gòu)函數(shù)。
質(zhì)疑:網(wǎng)上說這種方式,析構(gòu)是從葉子到樹根。根據(jù)TiXmlNode中的析構(gòu)函數(shù),我們可以得出,是從樹根到葉子。
但是我們在Delete myDocument時,應(yīng)該注意一點:
創(chuàng)建文檔時,也就是程序段中的myDocument。若是從堆上創(chuàng)建,則需需要手動釋放。如我們上述的片段中,就是在堆上創(chuàng)建的。
TiXmlDocument *myDocument=new TiXmlDocument ();
若是從棧上創(chuàng)建,則不須我們手動釋放,而是程序自動調(diào)用析構(gòu)函數(shù)。同時我們應(yīng)該注意,其他的元素必須在堆上創(chuàng)建。因為在TiXmlNode析構(gòu)函數(shù)中,是delete的,但是棧上的東東是不須delete,所以除了根節(jié)點之外連接的后代節(jié)點是必須從堆上創(chuàng)建。
經(jīng)過我們解釋,明白tinyxml中的原理了嗎?只要理解了tinyxml中的類的作用以及類之間的關(guān)系,看源碼是沒問題滴哦。
這篇博客根據(jù)創(chuàng)建xml小demo解釋了其中存在的疑問。那下篇博客中我們會根據(jù)解析xml來答疑解析中存在的問題。

以上所述就是怎么利用tinyxml操縱xml和應(yīng)該注意的問題有哪些的介紹,希望大家能夠喜歡,更多內(nèi)容請繼續(xù)關(guān)注武林技術(shù)頻道網(wǎng)站!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

天天草天天草| 香蕉成人影院| 1区2区3区精品视频| 日韩中文av在线| 综合久久av| 97在线免费视频观看| 国模一区二区三区白浆| 在线成人视屏| 影音先锋国产精品| 91国在线视频| 一起草av在线| 99青草视频在线播放视| 91视频网入口| 亚洲综合色激情五月| 中文字字幕在线中文乱码电影| 亚洲日本va午夜在线影院| 国模杨依粉嫩蝴蝶150p| 精品国内自产拍在线观看| 久久久久久久久久电影| 欧美绝顶高潮抽搐喷水合集| 5月丁香婷婷综合| 欧美在线播放一区| 九一久久久久久| 国产激情视频一区二区| 亚洲av激情无码专区在线播放| 成人高清视频在线| 欧美日韩在线视频免费观看| 精品久久久一区| 国产偷倩在线播放| 波多野结衣大片| 欧美激情xxxx性bbbb| 欧美激情va永久在线播放| 国产麻豆免费视频| 91超碰这里只有精品国产| 日韩在线不卡一区| 欧美日韩中文字幕在线视频| 欧美在线播放视频| jizz日本在线播放| 国产精品wwww| 91精品婷婷国产综合久久蝌蚪| 欧美天堂社区| 欧美激情视频一区二区| 永久免费毛片在线观看| 欧美在线导航| 日本美女爱爱视频| 伊人网综合在线| 久久久久久久伊人| 中文字幕av网站| 毛片一区二区三区| 全部孕妇毛片丰满孕妇孕交| 中文字幕乱码一区| 欧美国产另类| 国产一区深夜福利| 国产精品久久久久久久久久直播| 一区二区久久精品| 久久精品小视频| 高跟丝袜一区二区三区| 9久久婷婷国产综合精品性色| 欧美高清视频www夜色资源网| 欧美成人dvd在线视频| 久久黄色影院| 亚洲国产精品高清久久久| 亚洲精选一区| eeuss鲁片一区二区三区在线观看| 香蕉久久网站| 亚洲熟女乱综合一区二区| 免费一级欧美在线大片| 免费看日本黄色| 五码日韩精品一区二区三区视频| 99热在线观看精品| 怡红院精品视频在线观看极品| 国产视频欧美| 黄色国产在线播放| 亚洲电影影音先锋| a级片在线观看视频| 熟妇无码乱子成人精品| 国产精品自产拍在线观看中文| 1级黄色大片儿| 91精品一久久香蕉国产线看观看| 99视频在线观看免费| 午夜视频在线免费观看| 一区二区三区不卡视频| 亚洲a视频在线观看| 欧美视频在线播放一区| jizz欧美性11| 国产精品户外野外| 久久一二三四区| 国产精品一区二区x88av| 国产精品一区二区果冻传媒| 亚洲av网址在线| 国产真实久久| 伊人成人开心激情综合网| 老妇喷水一区二区三区| 中文字幕69页| 人人狠狠综合久久亚洲| igao视频网在线视频| 青青草综合网| 色偷偷网站视频| 亚洲综合免费观看高清完整版在线| 视频在线不卡免费观看| 日韩高清三区| 黄色免费在线播放| 精品麻豆国产| 日本高清不卡在线观看| 高潮按摩久久久久久av免费| 日韩三区视频| 国内外成人在线| 粉嫩av一区二区三区| 综合国产第二页| 国产精品99精品无码视亚| www.成人精品免费网站青椒| 性色88av老女人视频| 亚洲精品少妇久久久久久| 亚洲精品午夜精品| 亚洲福利一二三区| 经典一区二区| 尤物一区二区三区| 欧美韩国日本在线| 亚洲视频免费播放| 午夜精品久久久久久久爽| www.69av| 色呦呦一区二区三区| 91豆花精品一区| 亚洲国产一区二区三区四区| 男女污污视频网站| 久久久一区二区三区| 成人全视频免费观看在线看| 另类专区欧美蜜桃臀第一页| 精品一区二区6| 中文字幕一区在线观看| 可以免费看av的网址| 粉嫩在线一区二区三区视频| 少妇精品在线| 亚洲欧洲另类精品久久综合| 99久久久久免费精品国产| 国产剧情一区二区在线观看| 亚洲网址你懂得| 午夜小视频在线| 黄色免费观看视频网站| 欧美一级三级| 91久久精品久久国产性色也91| 欧美三区在线视频| 男人天堂网av| 国产艳俗歌舞表演hd| 伊人成色综合网| 色拍拍在线精品视频8848| 亚洲精品97久久中文字幕无码| 亚洲自拍偷拍视频| 亚洲综合网av| 日本成人中文字幕在线视频| 成人在线免费观看| 亚洲精品视频91| 美女精品在线| 91在线播放国产| 午夜精品美女久久久久av福利| 男女污污的视频| 美腿丝袜亚洲一区| 污污视频在线看| 亚洲二区自拍| 中文一区一区三区高中清不卡| 国产在线更新| 91福利在线观看| 欧美一级网站| 91精品国产91久久久久久一区二区| 97操碰视频| 日韩有码视频在线| 国产亚洲欧美久久久久| 欧美日韩综合一区| 老牛国内精品亚洲成av人片| 久久99精品国产.久久久久| 国产午夜在线| 国产精品久久久久一区二区三区| 麻豆成人久久精品二区三区小说| 偷拍自拍在线看| 黑人极品ⅴideos精品欧美棵| 999人在线精品播放视频| 亚洲国产导航| 国产天堂在线播放视频| 蜜芽在线免费观看| 91精品国产99久久久久久红楼| 国产精品qvod| 在线观看亚洲天堂| 精品综合在线| 成人免费高清视频| 91精品婷婷国产综合久久蝌蚪| 四虎影视2018在线播放alocalhost| 波多野结衣中文字幕在线| 亚洲免费伊人电影| 婷婷久久综合九色综合99蜜桃| av漫画网站在线观看| 水莓100国产免费av在线播放| 国产欧美一区二区三区在线观看视频| 神马一区二区影院| 欧美日韩中文字幕在线观看| 国产视频在线观看网站| 欧美精品v国产精品v日韩精品| 成人永久免费网站| 7m第一福利500精品视频| 日本在线播放一区二区三区| 久久九九热免费视频| 91亚洲无吗| 99久久夜色精品国产网站| 日韩中文在线| 调教视频免费在线观看| av久久久久久| 男男gaygays亚洲| 91精品国产福利| 日韩精品视频观看| 一分钟免费观看视频播放www| 欧美久久精品一级c片| 蜜桃视频www网站在线观看| 精品久久久久久久久久久院品网| 91在线播放视频| 欧美白嫩的18sex少妇| 亚洲欧美国产视频| 日韩伦理在线| 亚洲色图制服诱惑| 中文字幕自拍vr一区二区三区| www日本在线| 欧美三级 欧美一级| 午夜精品久久久久久久四虎美女版| av色男福利网| 亚洲人成电影在线播放| 中文av在线全新| 欧美日韩免费做爰大片| 日本免费一区二区三区视频观看| 99精品视频播放| 国色天香久久精品国产一区| av老司机免费在线| 国产精品腿扒开做爽爽爽挤奶网站| 国产小视频在线观看| 福利视频免费在线观看| 成人免费高清在线| 在线黄色免费看| 欧美性色aⅴ视频一区日韩精品| 亚洲美女性生活| 中日韩美女免费视频网站在线观看| 天海翼一区二区三区免费| 欧美人交a欧美精品| 国产精品成人在线| 久久久精品电影| 国产久一一精品| 1024在线视频| 永久www成人看片| 99riav国产精品| 精品国产午夜| 91传媒视频在线观看| 97超级在线观看免费高清完整版电视剧| 欧美精选午夜久久久乱码6080| 一线天自拍视频| 校花撩起jk露出白色内裤国产精品| 亚洲男人的天堂成人| 91精品啪在线观看国产18| sesexxxx| www.97.| 小嫩嫩精品导航| 成人jjav| 色网视频在线| 国产亚洲视频中文字幕视频| 日韩一区二区三区在线视频| 中文字幕在线观看1| 成人综合国产精品| 久久久男人的天堂| 美女禁区视频免费观看精选| 99青草视频在线播放视| 精品一区二区三区日本| 国产精品高潮呻吟| 欧美熟妇精品黑人巨大一二三区| 亚洲黄色av| 国产综合久久| 在线观看免费成人av| 成人黄色在线| 国产aⅴ激情无码久久久无码| 久久亚洲精品国产精品紫薇| 日本少妇xxxxx| 国产一级激情| 亚洲美女动态图120秒| 国产一区二区色| 日韩精品一区二区在线观看| 欧美疯狂做受xxxx富婆| 久久久久国产精品麻豆ai换脸| 亚洲精品国产精品国自产观看| 91沈先生作品| av中文在线资源| 国产午夜精品理论片a级探花| 成人免费视频在线观看超级碰| 日韩福利片在线观看| 天堂中文字幕在线观看| 香蕉网站在线| 国产精品高清无码| 成人网页在线免费观看| 欧美色图一区二区三区| 日本一区二区乱| 天天摸天天舔天天操| 向日葵污视频在线观看| 大陆精大陆国产国语精品| 99re6这里只有精品| 亚洲欧美国产不卡| 37p粉嫩大胆色噜噜噜| 韩国欧美一区二区| 国产精品入口日韩视频大尺度| 亚洲一区二区三区爽爽爽爽爽| 久久中文字幕电影| 日韩福利电影在线观看| 欧美综合精品| 国产精品日日摸夜夜添夜夜av| 久久亚洲免费视频| 电影天堂久久| 国产福利一区二区三区视频| bt7086福利一区国产| 综合激情丁香| 日本激情视频在线| 欧美videosex性极品hd| 国产精品污www一区二区三区| 亚洲第一黄色网址| 欧美亚洲在线播放| 国产欧美啪啪| 欧美13videosex性极品| 久久综合五月天婷婷伊人| 高潮久久久久久久久久久久久久| 亚洲精品一区二区精华| 青娱乐精品在线视频| 加勒比免费视频| 簧片在线观看| 精品九九在线| 男女私大尺度视频| 99热这里都是精品| 麻豆精品国产91久久久久久|