欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

有關(guān)TinyXML使用的簡單總結(jié)

系統(tǒng) 2025 0

有關(guān)TinyXML使用的簡單總結(jié)

??? 這次使用了 TinyXML 后,覺得這個東西真是不錯,于是將使用方法坐下總結(jié)來和大家分享。
????該解析庫在開源網(wǎng)站( http://sourceforge.net ?)上有下載,在本Blog也提供下載( 下載TinyXML
??? TinyXML 是一個開源的解析 XML 的解析庫,能夠用于 C++ ,能夠在 Windows Linux 中編譯。這個解析庫的模型通過解析 XML 文件,然后在內(nèi)存中生成 DOM 模型,從而讓我們很方便的遍歷這課 XML 樹。
??? 注:DOM模型即文檔對象模型,是將整個文檔分成多個元素(如書、章、節(jié)、段等),并利用樹型結(jié)構(gòu)表示這些元素之間的順序關(guān)系以及嵌套包含關(guān)系(理解html語言的讀者會很容易理解這種樹狀模型)。 ???????????????
????如下是一個XML片段:
???? <Persons>
????????<Person ID="1">
????????????<name>周星星</name>
????????????<age>20</age>
????????</Person>
????????<Person ID="2">
????????????<name>白晶晶</name>
????????????<age>18</age>
????????</Person>
????</Persons>
????在TinyXML中,根據(jù)XML的各種元素來定義了一些類:
??????? TiXmlBase :整個TinyXML模型的基類。
?????????????? ? TiXmlAttribute :對應(yīng)于XML中的元素的屬性。
??????????????? ?TiXmlNode :對應(yīng)于DOM結(jié)構(gòu)中的節(jié)點。
???????????????????????? TiXmlComment :對應(yīng)于XML中的注釋。
???????????????????????? TiXmlDeclaration :對應(yīng)于XML中的申明部分,即<?versiong="1.0"??>。
???????????????????????? TiXmlDocument :對應(yīng)于XML的整個文檔。
??????????????????????? TiXmlElement :對應(yīng)于XML的元素。
???????????????????????? TiXmlText :對應(yīng)于XML的文字部分。
???????????????????????? TiXmlUnknown :對應(yīng)于XML的未知部分。?
??????? TiXmlHandler :定義了針對XML的一些操作。
??? 那我們?nèi)绾问褂眠@些類以及他們的方法來操縱我們的XML呢?請看下面。
??? 一、讀取XML(假設(shè)我們的Xml文檔中的內(nèi)容與上面的Xml內(nèi)容一樣)
??? //創(chuàng)建一個XML的文檔對象
??? TiXmlDocument *myDocument = new TiXmlDocument("填上你的Xml文件名");
??? myDocument->LoadFile();
??? //獲得根元素,即Persons。
??? TiXmlElement *RootElement = myDocument.RootElement();
??? //輸出根元素名稱,即輸出Persons。
??? cout << RootElement->Value() << endl;
??? //獲得第一個Person節(jié)點。
??? TiXmlElement *FirstPerson = RootElement->FirstChildElement();
??? //獲得第一個Person的name節(jié)點和age節(jié)點和ID屬性。
??? TiXmlElement *NameElement = FirstPerson->FirstChildElement();
??? TiXmlElement *AgeElement = NameElement->NextSiblingElement();
??? TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
??? //輸出第一個Person的name內(nèi)容,即周星星;age內(nèi)容,即20;ID屬性,即1。
??? cout << NameElement->FirstChild()->Value << endl;
??? cout << AgeElement->FirstChild()->Value << endl;
??? cout << IDAttribute->Value() << endl;

????
??? 看,讀取XML是不是很簡單阿,和Java的XML解析庫非常的相似,就是名字改了一下而已。
??? 二、生成XML內(nèi)容
??? //創(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);
??? //設(shè)置Person元素的屬性。
??? PersonElement->SetAttribute("ID", "1");
??? //創(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("周星星");
??? TiXmlText *AgeContent = new TiXmlText("20");
??? NameElement->LinkEndChild(NameContent);
??? AgeElement->LinkEndChild(AgeContent);
???? //保存到文件
????myDocument->SaveFile("要保存的xml文件名");
????這樣,便創(chuàng)建了一個如下的xml文件:
??? <Persons>
????????<Person ID="1">
????????????<name>周星星</name>
????????????<age>20</age>
????????</Person>
??? </Persons>
????
??? 是不是很簡單啊?在這里我只是簡單的對TinyXml的使用作了介紹,歡迎各位提問留言,我會盡力解答各位的問題。[By Lqbest]

posted on 2006-08-07 15:51 freecoder Team 閱讀(2658) 評論(15) ? 編輯 ? 收藏 所屬分類: C plus XML

<!---->

View Comments

#1樓 ? [樓主] ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
By Yoyo:
很不錯啊,操作xml挺方便的,下次我來總結(jié).Net中xmldocument類的用法,以跟你的tinyXml做一比較。
BTW:
1,tinyXml是個解析庫,實際上是不是相當于一個解析xml文檔的類?
2,你上面聲明的對象變量為什么都要加*,有沒有特殊含義?
3,“->”與“.”的區(qū)別是什么?
4,“<<”是什么東東?
望大哥有空賜教。
2006-08-08 09:30 | freecoder Team
#2樓 ? [樓主] ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
@freecoder Team
問題1(tinyXml是個解析庫,實際上是不是相當于一個解析xml文檔的類?
)回答:TinyXML是個解析庫,他主要有DOM模型類(TiXmlBase、TiXmlNode、TiXmlAttribute、TiXmlComment、TiXmlDeclaration、TiXmlElement、TiXmlText、TiXmlUnknown)和操作類(TiXmlHandler)構(gòu)成。它由兩個頭文件(.h文件)和四個CPP文件(.cpp文件)構(gòu)成,用的時候,只要將(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)導(dǎo)入工程就可以用它的東西了。如果需要,可以將它做成自己的DLL來調(diào)用。

問題2(你上面聲明的對象變量為什么都要加*,有沒有特殊含義?
)回答:這個*號是C/C++中的指針聲明,相當于C#、Java中的引用。但是在C/C++中需要顯示的將這些指針釋放內(nèi)存,不然會造成內(nèi)存泄露。

問題3(“->”與“.”的區(qū)別是什么?)回答:“->”是指針專用,如:
“指針1->指針1所指向的對象的某個成員”;“.”是對象專用,如:
“對象1.對象1的某個成員”。這些都是C/C++中的語法。

問題4(“<<”是什么東東?)回答:在C中我們向屏幕輸出用printf,在C++中用“cout << 輸出內(nèi)容”來代替printf。性能更好,使用更方便。[Lqbest]
2006-08-08 09:49 | freecoder Team
#3樓 ? [樓主] ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
well done,thx!
If we compile it to be "DLL" file,i think that we can also use it in .net environment.[Yoyo]
2006-08-08 10:19 | freecoder Team
#4樓 ? [樓主] ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
@freecoder Team
yes. u are right. an DLL file can be used in any windows' program.[Lqbest]
2006-08-08 10:24 | freecoder Team
#5樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
想問一下利用這個可以進行Find查找Element嗎?
#6樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
突然問您個問題問題有些唐突,敬請您解答
關(guān)于tinyxml
在VC6.0中使用,源程序使用的是多線程release編譯所以我把tinyxml下載文件夾里的tinyxml_lib.dsp也用多線程release編譯生成了tinyxmld.lib,同兩個頭文件加入到程序中加入到程序中,函數(shù)調(diào)用都正常.但每次loadfile時候都失敗,跟蹤調(diào)試發(fā)現(xiàn)每次loadfile都探出一個對話框讓我指定vc60.pdb的位置,制定了幾次都不對
想問問您多線程編譯是不是這樣就可以?還是我使用tinyxml方法有問題
那個對話框是怎么回事。
該指定那個?
等待著您的回答。謝謝
#7樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
不用lib方式,直接把tinyxml的源代碼加入你的項目一起編譯就沒這些麻煩了
2007-05-31 11:52 | dada [未注冊用戶]
#8樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
你好:
我希望得到一個類似下面這樣的東西
<point>
12, 34
</point>
然后,我就看源代碼,發(fā)現(xiàn)PutString可能可以這么做;但是卻經(jīng)常出錯
首先,就是字符串轉(zhuǎn)化的問題;我的寫法是
const char *psz = "12 23";
const std::string s = std::string(psz);

newCgPoints->PutString(&s, out);
但是還是需要一步轉(zhuǎn)變成&引用型的;有沒有什么好的辦法呢?
其次,要達到我說的效果,這個API可以嗎?不可以的話,用什么呢?
#9樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
我剛才說的辦法好像不行,但是又不曉得用什么別的辦法
#10樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
不好意思啊,n長時間沒有看樂,忘記了阿
謝謝你的blog
#11樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
我創(chuàng)建了
TiXmlDocument *doc = NULL;
doc = new TiXmlDocument();

TiXmlElement *XMLRoot = NULL;
XMLRoot = new TiXmlElement("Sectors");
doc->LinkEndChild(XMLRoot);
XMLRoot->SetAttribute("name", "RoadGroup");
2個對象,但是在銷毀的時候出現(xiàn)了中斷;我的銷毀代碼為:
if(XMLRoot)
{
delete XMLRoot;
}
if(doc)
{
delete doc;
}
#12樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
問你個問題,就是我要從下面的字符串中將,hello和how are you解析出來,是怎么解析的啊?急啊!!!
<FONT FACE="騫煎渾"><FONT COLOR="#000000">hello<br>how are you</FONT></FONT>

2007-06-12 17:47 | 楊鋒 [未注冊用戶]
#13樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
我有個問題 關(guān)于xml中的node這個概念該怎么理解,是不是所有的element 都可以看成node?
#14樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
virtual const TiXmlElement * ToElement () const
Cast to a more defined type. Will return null if not of the requested type.
這個函數(shù)的作用是什么啊。能解釋下么。
2007-07-30 17:36 | bb [未注冊用戶]
#15樓 ? ?? 回復(fù) ?? 引用 ?? 查看 ?? ??
這位兄弟,我有個問題,就是創(chuàng)建完一個XML的文檔對象后,不把它
保存到文件,我想把把該xml文檔對象中的內(nèi)容搞出來到char數(shù)組中
像這樣:

char chxml[]= “<Persons> \
<Person ID=\"1\"> \
<name>周星星</name> \
<age>20</age> \
</Person> \
</Persons>";
請問怎么做???

有關(guān)TinyXML使用的簡單總結(jié)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: www一区二区三区 | 99久久国产免费福利 | 精品欧美视频 | 色免费视频 | 日本黄色福利视频 | www.麻豆| 中文字幕日韩在线 | 91精品久久久久久久久久 | 香港三日本三级三级三级 | 九九热在线免费视频 | 首页亚洲国产丝袜长腿综合 | 国产精品资源在线观看网站 | 日本高清视频在线播放 | 91视频进入 | 久久综合五月开心婷婷深深爱 | 日本视频在线播放 | 99热.com | 一区二区三区国产 | 欧美黄视频 | 欧美精品第十页 | 国产激情91久久精品导航 | 黄色电影在线免费观看 | 91av爱爱| 色播基地 | 色综合久久天天综合网 | 九色 在线 | 国产精品最新 | 久久精品天天中文字幕人 | 天天干天天插天天操 | 精品欧美一区二区在线观看 | 91精品国产777在线观看 | 国产精品视频1区 | 黄网免费视频 | 夜夜操av | 久久爱成人网 | 欧美另类综合 | 成人国产网站 | 国产欧美日本 | 亚洲欧美18v中文字幕高清 | 91精品久久久久久久久久入口 | 夜夜夜久久久 |