<?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遍历子节点例子的更多相关文章

  1. 5月25日-js操作DOM遍历子节点

    一.遍历节点 遍历子节点 children();//获取节点的所有直接子类 遍历同辈节点 next(); prev(); siblings();//所有同辈元素 *find(); 从后代元素中查找匹配 ...

  2. js遍历 子节点 子元素

    Js 节点 子元素 属性 方法 // 添加子节点前 删除所有子节点 var usernameEle = document.getElementById("username"); v ...

  3. DOM父节点、子节点例子

    父节点 <body> <ul id="oUl"> <li><a href="#">隐藏1</a>&l ...

  4. CCocos2Dx 一段遍历子节点的代码

    CCLog("Lein will hide account!CS_FAST_REGISTER_REQ"); <p> CCNode* child1 = (CCNode*) ...

  5. JS 查找遍历子节点元素

    function nextChildNode(node,clazz,tagName){ var count= node.childElementCount; for(var i=0;i<coun ...

  6. 问题:jQuery中遍历XML文件时候,获取子节点children不支持的情况(已解决)

    问题描述: 今天在写一个基于 jquery 的读取xml文件的程序时候,需要遍历xml的节点. 代码片段如下: function parse_xml_node(parent,result){ // r ...

  7. oracle递归查询子节点

    通过子节点向根节点追朔. select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节 ...

  8. 详解SimpleXML添加_修改_删除_遍历XML节点属性

    SimpleXML概述 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构造为一棵DOM ...

  9. dom4j解析xml获取所有的子节点并放入map中

    dom4j递归解析所有子节点 //解析返回的xml字符串,生成document对象 Document document = DocumentHelper.parseText(resultXml); / ...

随机推荐

  1. @bzoj - 4377@ [POI2015] Kurs szybkiego czytania

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 n, a, b, p,其中 n, a 互质.定义一个长度为 ...

  2. 网站的域名带www的和不带www的有什么区别呀

    国内用户习惯用www,不过默认的不带www的域名要好过带www的,带Www的是二级域名,不带的是顶级域名,默认的在搜索引擎中得权重会比较高 区别就在于一个带www一个不带www 其他都一样.www的域 ...

  3. P2993 [FJOI2014]最短路径树问题 点分治+最短路

    这道题还是非常简单的,由于我们要保证最小字典序,因此我们需要把边进行排序,然后从大到小插入,因为链式前向星是倒着存的.我们只需要先跑一个最短路,然后查询边是不是在最短路上,这个可以通过枚举边并用 di ...

  4. 在SpringBoot中使用JWT

    JWT简介 简介 JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记.也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他sessio ...

  5. Linux下的一些配置

    /etc/vim/vimrc文件 set cindent set expandtab set smartindent set autoindent set nu set hls taglist安装(t ...

  6. iptables智能DNS

    1. echo 1 > /proc/sys/net/ipv4/ip_forward 2. 在NAT服务器上添加以下规则: 在PREROUTING链中添加目的地址转换规则: iptables -t ...

  7. input submit标签的高度和宽度与input text的差异

    <input type="text"> 时设置input的高度和border,最后元素的高度和宽度包含了border的值. <input type="s ...

  8. 数据存储在哪里? Java是值传递还是引用传递?

    寄存器 : 最快的存储区,位于处理器中,寄存器会按需求自行分配空间,java不能控制寄存器,所以在程序中感觉不到它的存在 栈(stack) : 位于RAM(内存)中,速度仅次于寄存器,存储对象的引用( ...

  9. pytorch lstm crf 代码理解 重点

    好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.c ...

  10. 使用java实现CNN的实战

    使用java实现CNN的实战 1.要实现CNN,其中包括 卷积.池化(下采样).分类器.优化方法.分类器.反向传播 2.可以使用一个三维数组来表示一张图片(通道.行.列) 3.卷积,卷积的方式有三种: ...