TinyXml 修改指定节点和增加节点的做法

C++ TinyXML2使用方法及示例 转自https://blog.youkuaiyun.com/liang_baikai/article/details/78783839 概述  TinyXML2是简单实用的开源的C++XML文件解析库,可以很方便的应用到现有的项目之中。  TinyXML2解析器相对TinyXML1在代码上是完全重写,使其更适合于游戏开发中使用。它使用更少的内存,更快,并使用更少的内存分配。 说明  xml类似数据库,一般来说... 阅读详情



修改节点其实和查询指定节点的值有点类似,也分为两个函数,一个实现修改文本。另一个负责修改属性。

/* !
*  /brief 修改指定节点的文本。
*
*  /param XmlFile xml文件全路径。
*  /param strNodeName 指定的节点名。
*  /param strText 重新设定的文本的值
*  /return 是否成功。true为成功,false表示失败。
*/
bool  ModifyNode_Text( const  std:: string &  XmlFile, const  std:: string &  strNodeName, const  std:: string &  strText)
{
    
//  定义一个TiXmlDocument类指针
    TiXmlDocument  * pDoc  =   new  TiXmlDocument();
    
if  (NULL == pDoc)
    {
        
return   false ;
    }

    pDoc
-> LoadFile(XmlFile);
    TiXmlElement 
* pRootEle  =  pDoc -> RootElement();
    
if  (NULL == pRootEle)
    {
        
return   false ;
    }

    TiXmlElement 
* pNode  =  NULL;

    GetNodePointerByName(pRootEle,strNodeName,pNode);

    
if  (NULL != pNode)
    {
        pNode
-> Clear();   //  首先清除所有文本
        
//  然后插入文本,保存文件
        TiXmlText  * pValue  =   new  TiXmlText(strText);
        pNode
-> LinkEndChild(pValue);
        pDoc
-> SaveFile(XmlFile);
        
return   true ;
    }
    
else
        
return   false ;
}


/* !
*  /brief 修改指定节点的属性值。
*
*  /param XmlFile xml文件全路径。
*  /param strNodeName 指定的节点名。
*  /param AttMap 重新设定的属性值,这是一个map,前一个为属性名,后一个为属性值
*  /return 是否成功。true为成功,false表示失败。
*/
bool  ModifyNode_Attribute( const  std:: string &  XmlFile, const  std:: string &  strNodeName,
                 
const  std::map < std:: string ,std:: string >   & AttMap)
{
    typedef std::pair 
< std:: string ,std:: string >  String_Pair;

    
//  定义一个TiXmlDocument类指针
    TiXmlDocument  * pDoc  =   new  TiXmlDocument();
    
if  (NULL == pDoc)
    {
        
return   false ;
    }

    pDoc
-> LoadFile(XmlFile);
    TiXmlElement 
* pRootEle  =  pDoc -> RootElement();
    
if  (NULL == pRootEle)
    {
        
return   false ;
    }
 
    TiXmlElement 
* pNode  =  NULL;
    GetNodePointerByName(pRootEle,strNodeName,pNode);

    
if  (NULL != pNode)
    {
        TiXmlAttribute
*  pAttr  =  NULL; 
        std::
string  strAttName  =  _T( "" );
        std::
string  strAttValue  =  _T( "" );
        
for  (pAttr  =  pNode -> FirstAttribute(); pAttr; pAttr  =  pAttr -> Next())  
        {  
            strAttName 
=  pAttr -> Name();

            std::map
< std:: string ,std:: string > ::const_iterator iter;
            
for  (iter = AttMap.begin();iter != AttMap.end();iter ++ )
            {
                
if  (strAttName == iter -> first)
                {
                    pAttr
-> SetValue(iter -> second);
                }
            }

        }  
        pDoc
-> SaveFile(XmlFile);
        
return   true ;
    }
    
else
    {
        
return   false ;
    }

}

 

对于ModifyNode_Attribute函数,这里稍微介绍一下如何使用,比如对于下面这样一个xml文件:

<? xml version="1.0" encoding="utf-8" standalone="yes"  ?>
< MyApp >
    
< Messages >
        
< Welcome > Welcome to MyApp </ Welcome >
        
< Farewell > Thank you for using MyApp </ Farewell >
    
</ Messages >
    
< Windows >
        
< Window  name ="MainFrame"  x ="5"  y ="15"  w ="400"  h ="250"   />
    
</ Windows >
    
< Connection  ip ="192.168.0.1"  timeout ="123.456000"   />
</ MyApp >

 

我们如果要修改节点的Connection的ip为192.168.0.100,timeout为1000,我们可以这样用:

    std:: string  XmlFile  =  _T( " E://TestTinyxml//example4.xml " );
    std::
string  strNodeName  =  _T( " Connection " );
   typedef std::pair 
< std:: string ,std:: string >  String_Pair;
   std::map
< std:: string ,std:: string >  AttMap;
   AttMap.insert(String_Pair(_T(
" ip " ),_T( " 192.168.0.100 " )));
   AttMap.insert(String_Pair(_T(
" timeout " ),_T( " 1000 " )));
   ModifyNode_Attribute(XmlFile,strNodeName,AttMap);

 

下面是增加节点的两个函数:

/* !
*  /brief 增加指定节点的文本。
*
*  /param XmlFile xml文件全路径。
*  /param strParNodeName 要增加的节点的父节点。
*  /param strNodeName 指定的节点名。
*  /param strText 要增加的文本
*  /return 是否成功。true为成功,false表示失败。
*/
bool  AddNode_Text( const  std:: string &  XmlFile, const  std:: string &  strParNodeName, const  std:: string &  strNodeName, const  std:: string &  strText)
{
    
//  定义一个TiXmlDocument类指针
    TiXmlDocument  * pDoc  =   new  TiXmlDocument();
    
if  (NULL == pDoc)
    {
        
return   false ;
    }

    pDoc
-> LoadFile(XmlFile);
    TiXmlElement 
* pRootEle  =  pDoc -> RootElement();
    
if  (NULL == pRootEle)
    {
        
return   false ;
    }

    TiXmlElement 
* pNode  =  NULL;
    GetNodePointerByName(pRootEle,strParNodeName,pNode);

    
if  (NULL != pNode)
    {
        
//  生成子节点:pNewNode
        TiXmlElement  * pNewNode  =   new  TiXmlElement(strNodeName);
        
if  (NULL == pNewNode)
        {
            
return   false ;
        }
        
//  设置节点文本,然后插入节点
        TiXmlText  * pNewValue  =   new  TiXmlText(strText);
        pNewNode
-> LinkEndChild(pNewValue);

        pNode
-> InsertEndChild( * pNewNode);
        pDoc
-> SaveFile(XmlFile);
        
return   true ;
    }
    
else
         
return   false ;
    
}

/* !
*  /brief 增加节点。
*
*  /param XmlFile xml文件全路径。
*  /param strParNodeName 要增加的节点的父节点。
*  /param strNodeName 指定的节点名。
*  /param AttMap 要增加的节点设定的属性值,这是一个map,前一个为属性名,后一个为属性值
*  /return 是否成功。true为成功,false表示失败。
*/
bool  AddNode_Attribute( const  std:: string &  XmlFile, const  std:: string &  strParNodeName, const  std:: string  strNodeName, const  std::map < std:: string ,std:: string >   & AttMap)
{
    
//  定义一个TiXmlDocument类指针
    TiXmlDocument  * pDoc  =   new  TiXmlDocument();
    
if  (NULL == pDoc)
    {
        
return   false ;
    }

    pDoc
-> LoadFile(XmlFile);
    TiXmlElement 
* pRootEle  =  pDoc -> RootElement();
    
if  (NULL == pRootEle)
    {
        
return   false ;
    }

    TiXmlElement 
* pNode  =  NULL;
    GetNodePointerByName(pRootEle,strParNodeName,pNode);

    
if  (NULL != pNode)
    {
        
//  生成子节点:pNewNode
        TiXmlElement  * pNewNode  =   new  TiXmlElement(strNodeName);
        
if  (NULL == pNewNode)
        {
            
return   false ;
        }
        
//  设置节点的属性值,然后插入节点
        std::map < std:: string ,std:: string > ::const_iterator iter;
        
for  (iter = AttMap.begin();iter != AttMap.end();iter ++ )
        {
             pNewNode
-> SetAttribute(iter -> first,iter -> second);
        }

        pNode
-> InsertEndChild( * pNewNode);
        pDoc
-> SaveFile(XmlFile);
        
return   true ;
    }
    
else
        
return   false ;
}

C++ 使用tinyxml库处理XML文件 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。以上就是今天要讲的内容,本文仅仅简单介绍了tinyxml的使用,包括创建XML文件及增删改查的操作演示。 阅读详情

相关推荐

tinyxml 扩展,增加、删除、修改元素

在tinyxml基础上编写的API,可以创建结点,修改结点,删除结点,获取结点信息,包括字符串获取,数值获取,可以根据自己平台修改Makefile工具链重新编译,产生静态库可以直接用于项目,main.cpp为调用示例,config0.xml为测试文档

C/C++ 使用 tinyxml库 操作XML格式文件(创建、插入、删除、修改、解析)

这里有两种方式,有点奇怪,当使用第一种方式读取xml文件时,xml中有多个子节点Book1时,由于属性都有相同的id、name、price,导致会读取失败,不得已让我搞出了第二种方式去读取进行初始化,这样就没问题!和上面三、添加 的第1步骤一样…和上面三、添加 的第1步骤一样…和上面三、添加 的第1步骤一样…到此,使用tinyxml操作xml文件的教程已经完毕了,相信学到这里的童鞋们应该会如何使用了,那快做项目去吧!代码中使用了很多指针,但是都没有进行释放,为什么呢?

gzq0712的专栏 5627

GEE AI: 利用 Satellite Embedding 语义搜索快速识别研究区目标斑块

摘要 本文介绍了一种基于Google Earth Engine的遥感语义搜索技术,利用Satellite Embedding数据集快速识别目标地物。该方法通过将光谱信息转化为高维向量,在武汉市的案例中展示了如何:1)定义研究区和样本点;2)加载预处理的Embedding数据;3)计算向量相似度;4)结合面积过滤优化结果。相比传统监督分类,该技术具有响应快速(无需模型训练)、抗季节干扰和精准界定等优势,特别适用于森林碳储量监测和土地利用检测等应用场景。文中提供了完整的GEE代码实现流程,包括样本定义、相似度计

此星光明博客 622

TinyXml 查询、修改指定节点和增加、删除节点

TinyXml 查询、修改指定节点和增加、删除节点 转载于: (100条消息) TinyXml 查询、修改指定节点和增加、删除节点_wangxiaomeng的博客-优快云博客 ​ 这是C++的一种实现xml的实现方式,tinyxml的优点在于其短小精悍。可以将其打成一个lib,也可以直接将cpp, .h直接加入, 使用比较灵活。 1、示例 源码: /*! * /brief 修改指定节点的文本。 * * /param XmlFile xml文件全路径。 * /param strNodeName 指

qq_43331089的博客 2120

芯片详解——AD7606

AD7606详解

weixin_45661757的博客 5017

实战指南:R语言多组倾向评分逆概率加权(IPTW)建模与结果解读

本文详细介绍了如何使用R语言实现多组倾向评分逆概率加权(IPTW)建模,包括数据预处理、倾向评分估计、权重计算及结果解读。通过实战案例演示,帮助研究者掌握这一统计方法,有效平衡多组混杂因素,模拟随机对照试验效果,适用于医学、社会科学等领域的数据分析。

weixin_42528534的博客 394

TinyXml快速入门(三)

作者:朱金灿 来源:http://blog.youkuaiyun.com/clever101 在《TinyXml 快速入门(二) 》介绍使用tinyxml库获取xml文件声明,查询指定节点、删除指定节点的做法。在本文中继续介绍修改指定节点和增加节点的做法。 修改节点其实和查询指定节点的值有点类似,也分为两个函数,一个实现修改文本。另一个负责修改属性...

ladymaidu 213

LinuxCNC---在PC端显示开发板LinuxCNC界面

  今天在调试开发板时,执行开发板上的linuxcnc指令,总是出现如下报错 LINUXCNC - 2.9.0~pre0 application-specific initialization failed: couldn't connect to display "192.168.137.3:1" Error in startup script: invalid command name "image" while executing "image create photo -file $f/$i

中华田园巨龙 3469

TinyXml快速入门(增删节点)

 来源:http://www.cnblogs.com/clever101         在《TinyXml 快速入门(二)》介绍使用tinyxml库获取xml文件声明,查询指定节点、删除指定节点的做法。在本文中继续介绍修改指定节点和增加节点的做法。        修改节点其实和查询指定节点的值有点类似,也分为两个函数,一个实现修改文本。另一个负责修改属性。 Code hi

feixiangyue的专栏 749

【AI智能体】Codex 插件从使用到项目开发实战操作详解

Codex 插件从使用到项目开发实战操作详解

congge 7629

自动化Google Chrome的强大工具:chromedriver下载、安装、简单使用

本文介绍了 ChromeDriver 的基本概念和安装配置方法,重点讲解了如何通过 Selenium 实现 Chrome 浏览器的自动化测试。内容涵盖了 ChromeDriver 下载、版本匹配、依赖引入和简单的自动化测试脚本示例,帮助读者快速上手并避免常见问题。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 88万+

TinyXML2 快速上手

TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。TinyXML2详细介绍与源码获取方法详见:TinyXML2官网。

Doublelv 的博客专栏。 3万+

微信小程序爬虫终极指南:以电商小程序抓包与逆向分析为例(最新版)

在2026年的移动互联网生态中,微信小程序已经成为电商交易的核心载体之一。据统计,超过78%的头部电商平台都推出了微信小程序版本,其用户活跃度甚至超过原生App。对于数据从业者而言,小程序端往往藏着比Web端更丰富的接口数据——包括但不限于商品详情、价格波动、用户评价、库存变化、秒杀活动信息等。与传统的Web爬虫不同,微信小程序爬虫面临着三大核心挑战无URL地址栏:无法通过浏览器直接查看网络请求wx.request封装:所有请求均通过微信原生API发起,难以直接拦截然而,

2201_76125261的博客 536

TinyXML2使用教程

TinyXML2使用教程 原文转自 http://blog.youkuaiyun.com/K346K346/article/details/48750417 1.TinyXML2概述 TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。 TinyXML2详细介绍与源码获取方法详见:TinyXML2官网。 2. TinyXML1与TinyXML2对比 TinyXML1与TinyXM

mj348940862的博客 2696

vue2 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程)

vue2,nuxt2,高德地图,热力图,绘制热力图层,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅代表,人流量,vue2使用高德地图实现某个区域热力图,vue高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue2中使用高德地图渲染热力图组件,高德地图使用热力图详细教

✅ 精选推荐文章 4200

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用tinyxml操作(增加、修改、删除)XML文件

DisposeXMLFile.h #include "tinyxml.h" #include <string> using namespace std; class DisposeXMLFile { public: DisposeXMLFile(); ~DisposeXMLFile(); void createXMLFile(); void addXMLInfo(); void modifyNodeValue(TiXmlElement *pParentNodeElet, cons

不午休の野猫 1995

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TinyXml快速入门2

在《TinyXml快速入门(一)》中我介绍了使用TinyXml库如何创建和打印xml文件,下面我介绍使用tinyxml库对xml文件进行一系列的操作,包括获取xml文件声明,查询指定节点、删除指定节点、修改指定节点和增加节点的用法。在《TinyXml快速入门(一)》中我们知道xml文件中的一个节点元素实际包含两种值:属性和文本。其中属性在我看来可以看作是STL中的map,一个属性带一个属性值,ma

miao6664659的专栏 836

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Tinyxml一一利用tinyxml写入节点元素

接下来我们需要修改Test.xml文件,改变文件中节点元素值,如下所示,我们需要修改Text1值的元素值为wt1: &lt;FileRoot&gt; &lt;!--Setting for FileRoot--&gt; &lt;!--一级节点--&gt; &lt;Text1&gt;t1&lt;/Text1&gt; &lt;Text2&gt;t2&lt;/Text2...

xuanyin235的专栏 1430

TinyXml快速入门

  一、      对于xml文件,目前我的工作只是集中在配置文件和作为简单的信息文件来用,因此我不太喜欢使用msxml这种重量级的xml解析器,特别是使用 msxml解析xml涉及到复杂的com类型转换,更是令人感觉繁琐。因此对于简单的xml文件的解析,我更愿意使用开源的TinyXml。       首先介绍一下TinyXml吧。TinyXML是目前非常流行的一款基于DOM模型的XM

zeng622peng的专栏 1643

tinyxml快速入门3

在《TinyXml 快速入门(二)》介绍使用tinyxml库获取xml文件声明,查询指定节点、删除指定节点的做法。在本文中继续介绍修改指定节点和增加节点的做法。        修改节点其实和查询指定节点的值有点类似,也分为两个函数,一个实现修改文本。另一个负责修改属性。 Code highlighting produced by Actipro CodeHighlighter (

liqing19850102的专栏 761

TinyXML2使用方法及示例

TinyXML2使用方法及示例TinyXML2使用方法及示例 概述 说明 使用方法 下载链接 示例 创建XML文件 增 删 改 查概述 TinyXML2是简单实用的开源的C++XML文件解析库,可以很方便的应用到现有的项目之中。  TinyXML2解析器相对TinyXML1在代码上是完全重写,使其更适合于游戏开发中使用。它使用更少的内存,更快,并使用更少的内存分配。 说明 xml类似数据库,一般

凉_白开的博客 5万+

tinyxml 读取文本节点_TinyXML来操作XML文件(C++) | 学步园

在上一篇文章《TinyXML来操作XML文件(C++)》我们练习了创建XML、读取XML的方法,在本文中我们继续学习XML文件的增删改操作:包括读取声明、读取某结点文本属性、删去某结点、修改结点属性文本,增加结点操作读取XML声明:void ReadDeclaration(char *FileName,string& version,string& standalone,strin...

weixin_34422394的博客 511
上一篇: c++: string 的函数replace()用法
下一篇: ArcGIS 10 Server Manager:配置ASP.NET平台时遇到的“访问IIS元数据库失败”
berkshirman
博客等级 码龄19年 41粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值