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

本文介绍了RubyGems的功能及如何使用Builder库简化XML文件的创建过程。通过具体示例展示了如何利用Builder创建XML标记,并提供了针对特定需求的实现方法。

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

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

ExpandedBlockStart.gif代码
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根节点。

ExpandedBlockStart.gif代码
     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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值