资讯专栏INFORMATION COLUMN

Builder——用Ruby创建XML

Flink_China / 673人阅读

摘要:的提供了一个简单的方法创建标记和数据结构。类生成标记,生成事件。用法或打印特性支持注释也支持处理指令部分支持声明可以嵌套声明命名空间默认情况下特殊字符会自动转义如果不想转义,请使用符号代替字符串。

Jim Weirich的Builder提供了一个简单的方法创建XML标记和数据结构。

Builder::XmlMarkup::生成XML标记,Builder::XmlEvents::生成XML事件。

用法
require "rubygems"
  require_gem "builder", "~> 2.0"

  builder = Builder::XmlMarkup.new
  xml = builder.person { |b| b.name("Jim"); b.phone("555-1234") }
  xml #=> Jim555-1234

require "rubygems"
  require_gem "builder"

  builder = Builder::XmlMarkup.new(:target=>STDOUT, :indent=>2)
  builder.person { |b| b.name("Jim"); b.phone("555-1234") }
  #
  # 打印:
  # 
  #   Jim
  #   555-1234
  # 
特性

支持XML注释

xml_markup.comment! "This is a comment"
  #=>  

也支持XML处理指令

xml_markup.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
  #=>  

部分支持XML entity声明

xml_markup.declare! :DOCTYPE, :chapter, :SYSTEM, "../dtds/chapter.dtd"
  #=>  

可以嵌套声明

@xml_markup.declare! :DOCTYPE, :chapter do |x|
  x.declare! :ELEMENT, :chapter, :"(title,para+)"
  x.declare! :ELEMENT, :title, :"(#PCDATA)"
  x.declare! :ELEMENT, :para, :"(#PCDATA)"
end

#=>


  
  
]>

XML命名空间

xml.SOAP :Envelope do ... end

默认情况下特殊字符会自动转义:

xml = Builder::XmlMarkup.new
xml.sample(:escaped=>"This&That", :unescaped=>:"Here&There")
xml.target!  =>
  

如果不想转义,请使用符号代替字符串。

支持UTF-8

$KCODE = "UTF8"
xml = Builder::Markup.new
xml.instruct!(:xml, :encoding => "UTF-8")
xml.sample("Iñtërnâtiônàl")
xml.target!  =>
  "Iñtërnâtiônàl"

GitHub页面

编译 SegmentFault

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110333.html

相关文章

  • Java之XML解析

    摘要:本篇讲在中的解析,最后会简单地讲在解析时的做法。解析器通过解析校验的文件,可以知道哪些元素没有文本节点的子元素,因此可以帮我们剔除空白字符。类将类进一步封装,用表示。当构造对象时,会自动解析出元素的元素名元素的属性等。 许多的Java框架都支持用户自己配置,其中很常见的就是使用XML文件进行配置。本篇讲XML在Java中的解析,最后会简单地讲Mybatis在解析XML时的做法。 XML...

    cheng10 评论0 收藏0
  • Java之XML解析

    摘要:本篇讲在中的解析,最后会简单地讲在解析时的做法。解析器通过解析校验的文件,可以知道哪些元素没有文本节点的子元素,因此可以帮我们剔除空白字符。类将类进一步封装,用表示。当构造对象时,会自动解析出元素的元素名元素的属性等。 许多的Java框架都支持用户自己配置,其中很常见的就是使用XML文件进行配置。本篇讲XML在Java中的解析,最后会简单地讲Mybatis在解析XML时的做法。 XML...

    gclove 评论0 收藏0
  • Docker 在 Coding WebIDE 项目中的运

    摘要:是一个典型的模式架构,用户通过终端将字符流传递给。仿照的工作原理,我们在协议之上设计了,见下图真实实现中,是应用层的通讯协议。僵尸进程问题我们知道由于缺少而导致僵尸进程无法回收的问题迄今存在。进入构建环境执行命令。 Coding WebIDE 做个国内首个基于 Docker 技术的云端开发平台于4月1日正式上线。本文主要和大家分享和探讨 Docker 在 Web IDE 中运用的一些经...

    tinysun1234 评论0 收藏0
  • XML解析详解|乐字节

    摘要:解析获取解析器获取文档获取根节点获取根节点下所有的子节点,也可以根据标签名称获取指定的直接点获取元素的名称和里面的文本创建创建节点创建属性设置文本设置关系关于解析先讲到这里了,请继续关注乐字节,后续超级干货奉上,快快乐乐学。 大家好,乐字节的小乐又来了,Java技术分享哪里少的了小乐!上次我们说了可扩展标记语言XML之二:XML语言格式规范、文档组成,本文将介绍重点——XML解析。sh...

    LinkedME2016 评论0 收藏0
  • Java培训学习之Java开源软件的汇总

    摘要:开源软件的汇总开源插件是一个类似于的插件,它可以帮助你在不退出的环境下浏览本地文件系统。事件模型支持基于的事件提交。开源容器是一个非侵入式的对象反转控制容器容器。开源插件提供一个可针对文件语法进行着色的编辑器。 Java开源软件的汇总:EcSplorer 【Java开源 Eclipse插件】EcSplorer(Eclips...

    qiangdada 评论0 收藏0

发表评论

0条评论

Flink_China

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<