作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] XML Builder 输出的问题
时间Tue Aug 28 20:34:10 2007
※ 引述《ericyu (Eric)》之铭言:
: 环境:
: Ruby 1.8.6, RoR 1.2.3
: 状况:
: 使用 builder 输出 XML 时, 文字会被 escape.
: 如: γλώσσα
: 问题似乎是在 buidler lib 中的 xchar.rb 与 to_xs,
: 但是对 Ruby 不很熟, 不知道怎麽改.. orz
: 不知道有人解决过了吗? 或者是换别套 XML lib 比较好呢?
: 附录:
: Builder for Markup: http://builder.rubyforge.org/
我翻了一下 xchar.rb, 看到了 Fixnum#xchr,
觉得他是在那里把所有非 ascii 的 character 都 escape 掉,
我不知道要怎麽做可以保证正确且效率良好,不过乱试了一下,
可以做个白痴的 monkey patch:
require 'rubygems'
require 'builder'
class Fixnum
def xchr
n = XChar::CP1252[self] || self
case n when *XChar::VALID
XChar::PREDEFINED[n] or (n<128 ? n.chr : [n].pack('U'))
# 表示 UTF-8
else
'*'
end
end
end
builder = Builder::XmlMarkup.new
xml = builder.person { |b| b.name("大家来写 ruby XD"); b.phone("555-1234") }
puts xml
# <person><name>大家来写 ruby XD</name><phone>555-1234</phone></person>
会不会有什麽问题不是很确定,但是测试上可用 XD
--
#!/usr/bin/ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a
dog nailed
extra legs that
http://webptt.com/cn.aspx?n=bbs/Ruby/index.html
#
walks like an octopus, and Welcome ~
Ruby@ptt~
#
talks like an octopus, then
◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as
█ http://www.ruby-doc.org/
# if it were
an octopus.
◥ ◤ http://www.rubyforge.org/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
1F:→ ericyu:Thanks :P 08/28 20:42
2F:→ ericyu:else 後面我改成 n.chr 08/29 09:54