rapidxml遍历子节点例子
<?xml version="1.0" encoding="utf-8"?>
<luaword>
<btn>
<info>
<type>btn_click</type>
<funinfo>BtnClick(%s)</funinfo>
<name>按下按钮,%s</name>
</info> <info>
<type>btn_name</type>
<funinfo>GetBtnName(%s)</funinfo>
<name>获取按钮名字,%s</name>
</info>
</btn> <process>
<info>
<type>process_start</type>
<funinfo>StartProcess(%s,%s)</funinfo>
<name>启动进程,%s,%s</name>
</info>
</process> <edit>
<info>
<type>edit_set</type>
<funinfo>SetEditnam(%s,%s)</funinfo>
<name>设置文本框内容,%s</name>
</info>
</edit> <ctrl>
<info>
<type>edit_set</type>
<funinfo>SetEditnam(%s,%s)</funinfo>
<name>设置文本框内容,%s</name>
</info>
</ctrl> <wnd>
<info>
<type>fetch_wnd</type>
<funinfo>GetWnd(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)</funinfo>
<name>获取窗口,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s</name>
</info>
</wnd>
</luaword>
源xml
// rapidxmlTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <rapidxml.hpp>
#include <rapidxml_print.hpp>
#include <rapidxml_utils.hpp>
#include <process.h>
#include "CodingConvert.h"
int main()
{
rapidxml::file<> fdoc("luaword.xml");
std::string strbuf;
// std::cout << CCodingConvert::Utf8_To_Gbk(fdoc.data()) << std::endl;
strbuf = CCodingConvert::Utf8_To_Gbk(fdoc.data());
rapidxml::xml_document<> doc;
doc.parse<>(const_cast<CHAR*>(strbuf.data())); //解析xml文档
//std::cout << doc.name() << doc.value() << std::endl;
//获取root 节点
rapidxml::xml_node<>* root = doc.first_node();
//std::cout << root->name() << std::endl;
rapidxml::xml_node<>* itemTmp = root->first_node();
std::string itemName = root->name();
for (;nullptr!=itemTmp;itemTmp = itemTmp->next_sibling())
{
//std::cout << itemTmp->name() << itemTmp->value() << std::endl;
rapidxml::xml_node<>* subItem = itemTmp->first_node();
for (;nullptr!=subItem;subItem=subItem->next_sibling())
{
auto type = subItem->first_node("type");
if (type)
std::cout << type->name()<<":"<< type->value() << std::endl;
auto func = subItem->first_node("funinfo");
if (func)
std::cout << func->name() << ":" << func->value() << std::endl;
auto name = subItem->first_node("name");
if (name)
std::cout << name->name() << ":" << name->value() << std::endl;
}
}
system("pause");
return ;
}
rapidxml遍历子节点例子的更多相关文章
- 5月25日-js操作DOM遍历子节点
一.遍历节点 遍历子节点 children();//获取节点的所有直接子类 遍历同辈节点 next(); prev(); siblings();//所有同辈元素 *find(); 从后代元素中查找匹配 ...
- js遍历 子节点 子元素
Js 节点 子元素 属性 方法 // 添加子节点前 删除所有子节点 var usernameEle = document.getElementById("username"); v ...
- DOM父节点、子节点例子
父节点 <body> <ul id="oUl"> <li><a href="#">隐藏1</a>&l ...
- CCocos2Dx 一段遍历子节点的代码
CCLog("Lein will hide account!CS_FAST_REGISTER_REQ"); <p> CCNode* child1 = (CCNode*) ...
- JS 查找遍历子节点元素
function nextChildNode(node,clazz,tagName){ var count= node.childElementCount; for(var i=0;i<coun ...
- 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)
问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...
- oracle递归查询子节点
通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节 ...
- 详解SimpleXML添加_修改_删除_遍历XML节点属性
SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM ...
- dom4j解析xml获取所有的子节点并放入map中
dom4j递归解析所有子节点 //解析返回的xml字符串,生成document对象 Document document = DocumentHelper.parseText(resultXml); / ...
随机推荐
- Mac OSX原生读写NTFS功能开启方法
macOX系统内建的NTFS支持默认只能读不能写 原生读写NTFS,需要自行终端命令手动开启 1. 插上磁盘 此时Mac桌面应该会显示出插入的磁盘,但是当你想把文件拖入磁盘的时候,发现是不能拖进去的, ...
- MySQL_分库分表
分库分表 数据切分 通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果.数据的切分同时还能够提高系统的总体可用性,由于单台设备Crash ...
- Python基础:25文件
一:文件对象 文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 一旦设置了合适的"钩子", 你就可以访问具有文件类型接 ...
- 5 获取Form表单取值
#form表达提交@app.route("/data",methods=['GET','POST']) #methods 让当前路由支持GET 和 POST 方式def data( ...
- vue项目配置同一局域网可使用ip访问
1.检查 package.json文件,scripts.dev设置 host改成 "0.0.0.0" 2.config文件中找到 index.js 文件的host改成 " ...
- Codeforces Round #577 (Div 2)
A. Important Exam 水题 #include<iostream> #include<string.h> #include<algorithm> #in ...
- hdu 1789 Doing Homework again (Greedy)
Problem - 1789 继续贪心.经典贪心算法,如果数据比较大就要用线段树来维护了. 思路很简单,只要按照代价由大到小排序,然后靠后插入即可.RE了一次,是没想到deadline可以很大.如果d ...
- 5款实用的jQuery验证码插件
效果图 文档结构 HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Scoop 包管理工具 安装
本人浏览器已经跨域 https://get.scoop.sh 访问该地址成功 安装前提(所需要的环境): 操作环境:win10. 确保你的 PowerShell 版本 >= 3. win7或许低 ...
- 深入Java线程管理(二):线程的生命周期
Java线程的生命周期 一个线程的产生是从我们调用了start方法开始进入Runnable状态,即可以被调度运行状态,并没有真正开始运行,调度器可以将CPU分配给它,使线程进入Running状态,真正 ...