亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

有關TinyXML使用的簡單總結

系統 1954 0

有關TinyXML使用的簡單總結

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

????
??? 看,讀取XML是不是很簡單阿,和Java的XML解析庫非常的相似,就是名字改了一下而已。
??? 二、生成XML內容
??? //創建一個XML的文檔對象。
??? TiXmlDocument *myDocument = new TiXmlDocument();
??? //創建一個根元素并連接。
??? TiXmlElement *RootElement = new TiXmlElement("Persons");
??? myDocument->LinkEndChild(RootElement);
??? //創建一個Person元素并連接。
??? TiXmlElement *PersonElement = new TiXmlElement("Person");
??? RootElement->LinkEndChild(PersonElement);
??? //設置Person元素的屬性。
??? PersonElement->SetAttribute("ID", "1");
??? //創建name元素、age元素并連接。
??? TiXmlElement *NameElement = new TiXmlElement("name");
??? TiXmlElement *AgeElement = new TiXmlElement("age");
??? PersonElement->LinkEndChild(NameElement);
??? PersonElement->LinkEndChild(AgeElement);
??? //設置name元素和age元素的內容并連接。
??? TiXmlText *NameContent = new TiXmlText("周星星");
??? TiXmlText *AgeContent = new TiXmlText("20");
??? NameElement->LinkEndChild(NameContent);
??? AgeElement->LinkEndChild(AgeContent);
???? //保存到文件
????myDocument->SaveFile("要保存的xml文件名");
????這樣,便創建了一個如下的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樓 ? [樓主] ?? 回復 ?? 引用 ?? 查看 ?? ??
By Yoyo:
很不錯啊,操作xml挺方便的,下次我來總結.Net中xmldocument類的用法,以跟你的tinyXml做一比較。
BTW:
1,tinyXml是個解析庫,實際上是不是相當于一個解析xml文檔的類?
2,你上面聲明的對象變量為什么都要加*,有沒有特殊含義?
3,“->”與“.”的區別是什么?
4,“<<”是什么東東?
望大哥有空賜教。
2006-08-08 09:30 | freecoder Team
#2樓 ? [樓主] ?? 回復 ?? 引用 ?? 查看 ?? ??
@freecoder Team
問題1(tinyXml是個解析庫,實際上是不是相當于一個解析xml文檔的類?
)回答:TinyXML是個解析庫,他主要有DOM模型類(TiXmlBase、TiXmlNode、TiXmlAttribute、TiXmlComment、TiXmlDeclaration、TiXmlElement、TiXmlText、TiXmlUnknown)和操作類(TiXmlHandler)構成。它由兩個頭文件(.h文件)和四個CPP文件(.cpp文件)構成,用的時候,只要將(tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp)導入工程就可以用它的東西了。如果需要,可以將它做成自己的DLL來調用。

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

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

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

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

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

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

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

有關TinyXML使用的簡單總結


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色片在线观看 | 中文字幕欧美日韩高清 | 国产区在线观看视频 | 日本成年一区久久综合 | 国产一级淫片a | 国产成人精品影院狼色在线 | 久久成人永久免费播放 | 色片在线观看 | 日韩视频久久 | 国产日韩在线 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 国产精品久久永久免费 | 免费特黄一级欧美大片 | 日本特级aⅴ一级毛片 | 亚洲免费小视频 | 久草视频免费在线播放 | 久久99精品久久久久久国产人妖 | 久久久这里有精品 | 国产成人高清亚洲一区久久 | 国产亚洲综合一区在线 | 国语精品91自产拍在线观看二区 | 四虎影院wwww | 久久精品天天中文字幕人 | 亚洲精品久久99久久 | 久久久福利 | 久精品视频村上里沙 | 中文字幕在线免费视频 | 99在线精品国产不卡在线观看 | 国产乳摇福利视频在线观看 | 欧美操穴视频 | 69热在线观看 | 欧美成人天天综合天天在线 | 五月婷婷视频在线观看 | 欧美国产成人免费观看永久视频 | 一级大黄视频 | 乱色美www女麻豆 | 精品国产成人三级在线观看 | 欧美中文字幕视频 | 久久精品免费一区二区三区 | 加勒比黑人在线 | 成人毛片18女人毛片免费96 |