解析xml

 1 <?xml version="1.0" encoding="GBK"?>
 2 
 3 <root>
 4 
 5 <host station="1001" checked="true">afanihao.cn</host>
 6 
 7 
 8 <client>
 9 
10 <name>shaofa</name>
11 
12 <id>200501</id>
13 
14 </client>
15 
16 </root>
 1 #include <stdio.h>
 2 #include "../tinyxml/tinyxml.h"
 3 
 4 int main()
 5 {
 6     // 解析xml
 7     TiXmlDocument xml_doc;
 8     if(!xml_doc.LoadFile("example02a.xml"))
 9     {
10         return -1;
11     }
12     
13 
14     // 根节点
15     TiXmlElement* xml_root = xml_doc.RootElement();
16     if (NULL == xml_root)
17     {
18         return -1;
19     }
20 
21     
22     if(1)
23     {
24         TiXmlElement* xml_host = xml_root->FirstChildElement("host");// 获取元素
25         const char* text = xml_host->GetText();//显示成文本
26         const char* aChecked = xml_host->Attribute("checked");//获取属性
27         const char* aStation = xml_host->Attribute("station");
28         printf("text:%s, check:%s, station:%s\n", text, aChecked, aStation);
29     }
30 
31     
32     if(1)
33     {
34         TiXmlElement* xml_client = xml_root->FirstChildElement("client");
35 
36         TiXmlElement* xml_clientId = xml_client->FirstChildElement("id");//取得client的id
37         TiXmlElement* xml_clientName = xml_client->FirstChildElement("name");//取得client的name
38 
39     
40     }
41 
42     
43     return 0;
44 }
 1 <?xml version="1.0" encoding="GBK"?>
 2 
 3 <root>
 4 
 5 
 6 <NoteList>
 7 
 8 
 9 <Note>
10 
11 <id>1</id>
12 
13 <when>2016-1-23 10:00</when>
14 
15 <who>Wang</who>
16 
17 <what>吃饭</what>
18 
19 </Note>
20 
21 
22 <Note>
23 
24 <id>2</id>
25 
26 <when>2016-1-21 20:00</when>
27 
28 <who>Jiang</who>
29 
30 <what>看电影</what>
31 
32 </Note>
33 
34 
35 <Note>
36 
37 <id>3</id>
38 
39 <when>2016-1-20 9:00</when>
40 
41 <who>Li</who>
42 
43 <what>去博物馆</what>
44 
45 </Note>
46 
47 </NoteList>
48 
49 </root>
 1 #include <stdio.h>
 2 #include <vector>
 3 #include <string>
 4 using namespace std;
 5 
 6 
 7 #include "../tinyxml/AfTinyXml.h"
 8 
 9 struct Note
10 {
11     int id;
12     char when[32];
13     char who[32];
14     char what[128];
15 };
16 
17 vector<Note> notes;
18 
19 int main()
20 {
21     // 解析xml
22     TiXmlDocument xml_doc;
23     if(!xml_doc.LoadFile("example02b.xml"))
24     {
25         return -1;
26     }
27 
28     // 根节点
29     TiXmlElement* xml_root = xml_doc.RootElement();
30     if (NULL == xml_root)
31     {
32         return -1;
33     }
34 
35     // 获取元素的文本与属性
36 
37     TiXmlElement* xml_NoteList = xml_root->FirstChildElement("NoteList");
38     if(xml_NoteList)
39     {
40         TiXmlElement* xml_Note = xml_NoteList->FirstChildElement("Note");
41         while(xml_Note)
42         {
43             // 取得子元素的文本
44             int id = AfTinyXml::childAsInt(xml_Note, "id");
45             string when = AfTinyXml::childAsText(xml_Note, "when");
46             string who = AfTinyXml::childAsText(xml_Note, "who");            
47             string what = AfTinyXml::childAsText(xml_Note, "what");
48             
49             // 保存到列表
50             Note r;
51             r.id = id;
52             strcpy(r.when, when.c_str());
53             strcpy(r.who, who.c_str());
54             strcpy(r.what, what.c_str());
55             notes.push_back(r);
56 
57             // 下一个兄弟元素
58             xml_Note = xml_Note->NextSiblingElement("Note");
59         }
60     }
61 
62 
63     return 0;
64 }

 

posted on 2017-12-05 12:41  Doctor_uee  阅读(176)  评论(0)    收藏  举报

导航