作者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/m.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