如何访问xml中所有标签为label 的内容

shiter
人工智能领域优质创作者
博客专家认证
2015-05-15 02:14:16
标签label在标签question中,,question有嵌套定义,所以可能得用到递归访问

我写的函数有点问题,求指导:


解析库用的tinyxml2:

http://grinninglizard.com/tinyxml2docs/index.html

[code=c][/void findAllLabel(XMLElement* next)
{
if(next->FirstChildElement("Question"))
{
next = next->FirstChildElement("Question");
string str = next->FirstChildElement("Label")->GetText();
cout<<str<<endl;

}
else
{
XMLElement *neighbor = next->NextSiblingElement();
while(neighbor)
{
string str1 = neighbor->FirstChildElement("Label")->GetText();
cout<<str1<<endl;
neighbor = neighbor->NextSiblingElement();
}
next =
}

//XMLElement* nextElement = next->FirstChildElement("Question");
findAllLabel(next);



}code]
...全文
783 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
haierpro 2015-05-18
  • 打赏
  • 举报
回复
void findAllLabel(XMLElement* next)
{
    XMLElement *pLable = next->FirstChildElement("Label")
    if (pLable)
    {
        cout<<pLable->GetText();
    }
     
    XMLElement *nextChild = next->FirstChildElement("Question")
    while(nextChild)
    {
        findAllLabel(nextChild);
        nextChild = nextChild->NextSiblingElement();
    }
}
shiter 2015-05-18
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<Questions Project="simple_survey" Context="Question" >
  <Question QuestionFullName="Respondent" QuestionType="Block" IsSystem="true">
    <Label>Variables reserved for respondent identification</Label>
    <Question QuestionName="Serial" QuestionFullName="Respondent.Serial" IsSystem="true" >
      <Label>Serial number</Label>
      
      <HelperFields>
        <Question QuestionName="SourceFile" QuestionFullName="Respondent.Serial.SourceFile" IsSystem="true" >
          <Label>What source file (for example, TIFF) can be used to get the respondent's serial number?</Label>
        </Question>
      </HelperFields>
    </Question>
    </Questions>
引用 7 楼 haierpro 的回复:

void findAllLabel(XMLElement* next)
{
	XMLElement *pLable = next->FirstChildElement("Label")
	if (pLable)
	{
		cout<<pLable->GetText();
	}
	
	XMLElement *nextChild = next->FirstChildElement("Question")
	while(nextChild)
	{
		findAllLabel(next);
		nextChild = nextChild->NextSiblingElement();
	}
}
未测试,你试一下吧,递归一定要只处理本层的事务,才不会混乱。
您这个有点问题,死循环了
haierpro 2015-05-15
  • 打赏
  • 举报
回复

void findAllLabel(XMLElement* next)
{
	XMLElement *pLable = next->FirstChildElement("Label")
	if (pLable)
	{
		cout<<pLable->GetText();
	}
	
	XMLElement *nextChild = next->FirstChildElement("Question")
	while(nextChild)
	{
		findAllLabel(next);
		nextChild = nextChild->NextSiblingElement();
	}
}
未测试,你试一下吧,递归一定要只处理本层的事务,才不会混乱。
shiter 2015-05-15
  • 打赏
  • 举报
回复
引用 5 楼 hbu_pig 的回复:
[quote=引用 4 楼 wangyaninglm 的回复:] [quote=引用 3 楼 ilikehigame 的回复:] 这个刚做过一个项目用到过,加我Q:172759749教你
[/quote]这么好,还有人手把手教[/quote] 哎,楼上那位兄台叫我写一个三层for循环,我也是醉了。。。
欢乐的小猪 2015-05-15
  • 打赏
  • 举报
回复
引用 4 楼 wangyaninglm 的回复:
[quote=引用 3 楼 ilikehigame 的回复:] 这个刚做过一个项目用到过,加我Q:172759749教你
[/quote]这么好,还有人手把手教
shiter 2015-05-15
  • 打赏
  • 举报
回复
引用 3 楼 ilikehigame 的回复:
这个刚做过一个项目用到过,加我Q:172759749教你
  • 打赏
  • 举报
回复
引用 2 楼 wangyaninglm 的回复:
void findAllLabel(XMLElement* next)
{
	if(next->FirstChildElement("Question"))
	{
		next = next->FirstChildElement("Question");
		string str = next->FirstChildElement("Label")->GetText();
		cout<<str<<endl;
		
	}
	else
	{
		XMLElement *neighbor = next->NextSiblingElement();
		while(neighbor)
		{
			string str1 = neighbor->FirstChildElement("Label")->GetText();
			cout<<str1<<endl;
			neighbor = neighbor->NextSiblingElement();
		}
		next = 
	}
	
	//XMLElement* nextElement = next->FirstChildElement("Question");
	findAllLabel(next);
	
	
	
}
这个刚做过一个项目用到过,加我Q:172759749教你
shiter 2015-05-15
  • 打赏
  • 举报
回复
void findAllLabel(XMLElement* next)
{
	if(next->FirstChildElement("Question"))
	{
		next = next->FirstChildElement("Question");
		string str = next->FirstChildElement("Label")->GetText();
		cout<<str<<endl;
		
	}
	else
	{
		XMLElement *neighbor = next->NextSiblingElement();
		while(neighbor)
		{
			string str1 = neighbor->FirstChildElement("Label")->GetText();
			cout<<str1<<endl;
			neighbor = neighbor->NextSiblingElement();
		}
		next = 
	}
	
	//XMLElement* nextElement = next->FirstChildElement("Question");
	findAllLabel(next);
	
	
	
}
shiter 2015-05-15
  • 打赏
  • 举报
回复
JavaScript极速狂飙:组合拼接字符串的效率JavaScript极速狂飙:CSS样式表的背景渲染效率JavaScript面向对象的支持--(1)JavaScript面向对象的支持--(2)JavaScript面向对象的支持--(3)JavaScript面向对象的支持--(4)JavaScript面向对象的支持--(5)JavaScript面向对象的支持--(6)JavaScript精简学习1:基础知识JavaScript精简学习2:浏览器输出JavaScript精简学习3:图像JavaScript精简学习4:表单事半功倍之Javascript--(1)事半功倍之Javascript--(2)事半功倍之Javascript--(3)事半功倍之Javascript--(4)JavaScript教程--从入门到精通--(1)JavaScript教程--从入门到精通--(2)JavaScript教程--从入门到精通--(3)JavaScript教程--从入门到精通--(5)JavaScript教程--从入门到精通--(6)JavaScript教程--从入门到精通--(7)JavaScript教程--从入门到精通--(8)JavaScript教程--从入门到精通--(9)悟透JavaScript(李站老师)-编程的快乐悟透JavaScript(李站老师)-初看原型悟透JavaScript(李站老师)-对象素描悟透JavaScript(李站老师)-放下对象悟透JavaScript(李站老师)-构造对象悟透JavaScript(李站老师)-原型扩展用javascript操作 asp .net TextBox控件用javascript操作 asp .net Label控件用javascript操作 asp .net TextBox控件 下用javascript操作asp.net label控件 外一篇用javascript改变onclick调用的函数用JavaScript加密保护网站页面用Javascript检测网速的方法用Javascript评估用户输入密码的强度用JavaScript实现仿Windows关机效果用javascript实现进度条用javascript怎样实现图片模糊效果《ExtJS2.0实用简明教程》之Border区域布局《ExtJS2.0实用简明教程》之Ext类库简介《ExtJS2.0实用简明教程》之布局概述《ExtJS2.0实用简明教程》之获得ExtJS《ExtJS2.0实用简明教程》之应用ExtJSjs访问xml之遍历节点树js访问xml之创建xmlDocumentjs访问xml之根节点操作js访问xml之节点操作(1)js访问xml之节点操作(2) js访问xml之节点对象属性和方法js访问xml之删除一个book元素节点js访问xml之添加一个book元素节点【JS】兼容ff的加入收藏和设为首页【补】【sina】绕过sina博客的限制,超级BT执行Javascript【blog】介绍一下给sina博客加背景音乐的办法【Blog】再次解说博客加音乐的办法张孝祥JavaScript教程笔记:HTML基础张孝祥JavaScript教程笔记:HTML基础(二)张孝祥JavaScript教程笔记:HTML基础(三)-URL,图像标签,图像地图JavaScript经典效果集锦(一)JavaScript经典效果集锦(二)JavaScript经典效果集锦(三)Javascript技术技巧大全(一)Javascript技术技巧大全(二)Javascript技术技巧大全(三)Javascript技术技巧大全(四)Javascript技术技巧大全(五)JavaScript[对象.属性]集锦之一

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧