首页 » SEO优化 » xmlreader多节点php技巧_C若何遍历xml文档

xmlreader多节点php技巧_C若何遍历xml文档

访客 2024-11-15 0

扫一扫用手机浏览

文章目录 [+]

接下来我们就一起来看下C++如何遍历xml吧。
实在这种标签型措辞都存在遍历的思路都是一样的,只是用的措辞不同而已,像html可能大部分用的便是js吧!

首先给大家看一下我自己写的大略的xml文档

xmlreader多节点php技巧_C若何遍历xml文档

下面是xml代码

xmlreader多节点php技巧_C若何遍历xml文档
(图片来自网络侵删)

<people> <man name=\"大众jordan\"大众> <child name=\"大众nike\公众>i am a boy<child> <classMate>it nike'classMate<classMate> </man> <woman name=\公众lily\"大众> <child name=\公众lucy\公众>a am a girl<child> <classMate>it lucy'classMate<classMate> </woman></people>

首先看下这个文档能不能用

#include <stdio.h>#include <iostream>#include \"大众tinyxml2.h\公众//这里我用的是tinyxml2库,在网高下载的,有须要的可以私信我using namespace std;int main(){tinyxml2::XMLDocument doc ;int result = doc.LoadFile(\公众test.xml\公众);if(result == tinyxml2::XML_SUCCESS){cout<<\"大众load success\"大众<<endl;}system(\"大众pause\公众);}

运行代码

OK,没问题,接下来开干,先貼截圖

下面是原代碼

#include <stdio.h>#include <iostream>#include \"大众tinyxml2.h\公众using namespace std;void xmlReaderFunc(tinyxml2::XMLElement node){//这一行代码是没有用的,在这里是为了给大家输出节点名称让大家更清楚的知道他的逻辑if (node != NULL)cout<<node->Name()<<endl;//递归结束条件if (node == NULL){;//cout<<\公众node null\公众<<endl;}else if (node->FirstChildElement()==NULL){xmlReaderFunc(NULL);}else if (node->FirstChildElement()!=NULL){//获得当前节点的第一个子节点tinyxml2::XMLElement child_node = node->FirstChildElement();xmlReaderFunc(child_node);//获取当前节点的第一个子节点的下一个兄弟节点child_node = child_node->NextSiblingElement();while (child_node != NULL){xmlReaderFunc(child_node);child_node = child_node->NextSiblingElement();}xmlReaderFunc(NULL);}}int main(){tinyxml2::XMLDocument doc ;int result = doc.LoadFile(\"大众test.xml\"大众);if(result == tinyxml2::XML_SUCCESS){//cout<<\"大众load success\"大众<<endl;}//获取到根节点tinyxml2::XMLElement root_element = doc.RootElement();//将根节点传入函数开始遍历xmlReaderFunc(root_element);system(\公众pause\"大众);}

然后看一下运行结果:

这个是用到了一个递归的思想,递归思想紧张有两个点:1、前一个与后一个的关系。
2、闭幕条件。

大家看输出的标署名再结合代码就能知道是怎么一个遍历过程了。

实在很大略,便是它在每次调用xmlReaderFunc方法的时候都会将这个节点的子第一个子节点先全部遍历完然后再去遍历跟他同级的兄弟节点,这样循环去调用,直至找到的节点为空就结束。

我再将xml变动一下,各位再看一下输出结果该当就更清楚了

<people> <man name=\"大众jordan\公众> <child name=\"大众nike\"大众>i am a boy</child> <grandSon name=\"大众addidas\公众>i am a grandSon</grandSon> <classMate>it nike'classMate</classMate> </man> <woman name=\"大众lily\公众> <child name=\"大众lucy\"大众>a am a girl</child> <granddaughter name=\公众kaka\"大众>i am a granddaughter</granddaughter> <classMate>it lucy'classMate</classMate> </woman></people>

我这边在child节点下面新增了grandSon 和granddaughter 两个节点,我们看一下输出结果:

这样是不是对全体遍历的过程更加清楚了呢?

如果大家有须要tinyxml2库的或者不睬解可以私信我,然后后期我会连续更新tinyxml2库的一些其他用法,还有更新的json库的用法,感激大家~~~~

标签:

相关文章

介绍百度网盘,云端存储时代的创新先锋

随着互联网技术的飞速发展,云计算已经成为现代生活不可或缺的一部分。而在这其中,百度网盘作为国内领先的云存储服务提供商,以其卓越的性...

SEO优化 2025-01-03 阅读1 评论0

介绍监控屏蔽技术,守护个人隐私的利器

随着科技的发展,监控设备已经深入到我们生活的方方面面。在享受便利的隐私安全问题也日益凸显。如何有效屏蔽监控,保护个人隐私,成为人们...

SEO优化 2025-01-03 阅读1 评论0

介绍番号观看方法,轻松驾驭影视世界

随着互联网的普及,网络影视资源日益丰富,番号作为影视作品的标识码,已经成为广大观众了解、搜索和观看影视作品的重要途径。如何正确地使...

SEO优化 2025-01-03 阅读1 评论0

介绍盗微信号黑幕,网络安全的严峻挑战

在数字化时代,微信已成为人们生活中不可或缺的通讯工具。随着微信用户数量的激增,盗微信号的事件也日益增多。本文将深入剖析盗微信号的方...

SEO优化 2025-01-03 阅读1 评论0