一杯奶茶的温暖

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

  RubyGems是一个库和程序的标准化打包以及安装框架,使得定位、安装、升级和卸载ruby包变得容易。使用builder来创建xml比用REXml简单便捷,首先是安装builder,“运行——gem install builder",

然后就可以使用了。不过这个方法从TreeCtrl中导出节点到xml中,节点名称固定,如

代码
require 'builder'
  Document.new(
"<a><b/></a>").serialize( tr )
= 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


 


 

 

posted on 2009-12-14 12:03  一杯奶茶的温暖  阅读(730)  评论(0编辑  收藏  举报

导航