<?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. 转载:ubuntu 下的dpkg 的用法

    dpkg是一个Debian的一个命令行工具,它可以用来安装.删除.构建和管理Debian的软件包. 下面是它的一些命令解释: 1)安装软件 命令行:dpkg -i <.deb file name ...

  2. CSS文本超过两行用省略号代替

    1.只显示一行,超出部分用省略号 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 2.只显示两行(或多行),超出部分用省 ...

  3. kubernetes API 访问控制在阿里云容器服务(ACK)上的实践

    提起K8s API的访问控制,很多同学应该都会想到RBAC,这是K8s用来做权限控制的方法,但是K8s对API的访问控制却不止于此,今天我们就来简单介绍下K8s的访问控制以及ACK如何利用这套方法提供 ...

  4. 从HelloWorld看Knative Serving代码实现

    摘要: Knative Serving以Kubernetes和Istio为基础,支持无服务器应用程序和函数的部署并提供服务.我们从部署一个HelloWorld示例入手来分析Knative Servin ...

  5. @codeforces - 1205B@ Shortest Cycle

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 n 的正整数序列 a1, a2, ..., an ...

  6. Bootstrap之Form表单验证神器: BootstrapValidator(转)

    前言:做Web开发的我们,表单验证是再常见不过的需求了.友好的错误提示能增加用户体验.博主搜索bootstrap表单验证,搜到的结果大部分都是文中的主题:bootstrapvalidator.今天就来 ...

  7. 2019-11-17-dotnet-C#-获取本机外网-IP-地址

    title author date CreateTime categories dotnet C# 获取本机外网 IP 地址 lindexi 2019-11-17 16:38:10 +0800 201 ...

  8. php 向数组 首位插入 和 尾部插入

    首位插入: <?php$queue = array("orange", "banana");array_unshift($queue, "app ...

  9. 洛谷P2258 子矩阵 题解 状态压缩/枚举/动态规划

    作者:zifeiy 标签:状态压缩.枚举.动态规划 题目链接:https://www.luogu.org/problem/P2258 这道题目状态压缩是肯定的,我们需要用二进制来枚举状态. 江湖上有一 ...

  10. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...