RubyGems是一个库和程序的标准化打包以及安装框架,使得定位、安装、升级和卸载ruby包变得容易。使用builder来创建xml比用REXml简单便捷,首先是安装builder,“运行——gem install builder",
然后就可以使用了。不过这个方法从TreeCtrl中导出节点到xml中,节点名称固定,如
代码 require ' builder ' Document.new( " <a><b/></a> " ).serialize( tr )x = Builder::XmlMarkup.new(:target => $stdout, :indent => 1 ) # ":target =>$stdout"参数:指示输出内容将被写向标准输出控制台 # ":indent =>1"参数:XML输出形式将被缩进一个空格字符x.instruct! :xml,:version =>'1.1',:encoding => 'gb2312' x.comment! " 书本信息 " x.library( " shelf " => " Recent Acquisitions " ) { x.section( " name " => " ruby " ){ x.book( " isbn " => " 0672310001 " ){ x.title " Programming Ruby " x.author " Yukihiro " x.description " Programming Ruby - The Pragmatic Programmer's Guide " } }}这里的library就不能修改了,无法满足我的需要,最后还是用rexml/document中的方法添加。
根据Wx:TreeCtrl的特点,因为没有找到 Wx:TreeCtrl# get_next_child方法,遍历树递归算法改了下
先传入tree的根节点id和xml根节点。
代码 def creatTreeXml(element,parent = nil) if element.kind_of?(REXML::Element) itemdata = SaveStruct.new(element.attributes.get_attribute( " id " ).value.to_s, element.attributes.get_attribute( " name " ).value.to_s, element.attributes.get_attribute( " type " ).value.to_s) croot = @myTree.append_item(parent,itemdata.name.to_s, - 1 , - 1 ,itemdata) if element.elements != nil for cellelement in element.elements creatTreeXml(cellelement,croot) end end end end
转载于:https://www.cnblogs.com/alex_85/archive/2009/12/14/1623580.html