ruby学习记录——创建XML(遍历Wx:TreeCtrl)

it2022-05-29  60

  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


最新回复(0)