[Ruby] REXML конкатенация
Andrew Kulinich
andrew.kulinich на itgrp.net
Вт Мар 23 21:15:51 MSK 2004
Mikhail Yakshin wrote:
>> Жаль. Я думал есть более простые способы :(
> Почему? То, что описано - это ни разу не задача какого-либо XML-парсера.
> Это типичная задача по преобразованию иерархических документов. И
> инструменты стоит применять соответствующие.
Не знаю. По-моему вполне могло существовать что-то встроенное. нечто
типа REXML::Element::concat
Кстати, в REXML разочаровался - огромная куча всяких странностей.
Например порадовал мой тест, в котором, если было больше трех букв, и
последняя русская, то в конце документа прибавлялся ещё один закрывающий
тэг :). Правда это для REXML примерно 0,5 - 1 годовой давности
Или например rexl/encodings/ICONV.rb
метод encode
Iconv::iconv обламывается на больших кусках текста. Выяснил это примерно
с год назад. Было переписано как в ruby_dist/ext/iconv/iconv.c
module Tool
def self.recode( to, from, str )
cd = Iconv.new( to, from )
res = ''
str.each do |s|
begin
res << cd.iconv(s)
rescue Iconv::IllegalSequence => exc
res << exc.success.to_s
s = exc.failed.to_s[1..-1]
retry
end
end
res << cd.iconv(nil) # don't forget this
cd.close
return res
end
end
REXML похоже просто недостаточно тестировали.(боже! ну зачем нам столько
кодировок!)
А вообще ООД библиотеки мне понравился - всё логично и красиво.
>> 2All: кто чем пользуется для работы с XSLT из руби? Когда я примерно
>> полгода назад с этим разбирался, то вариантов было 2: биндинги к
>> sablotron и libxslt. Причем первый был настолько древний, что мне даже
>> собрать его не получилось, а второй желал видеть XML или XSLT(или и
>> то, и то, не помню) только в виде файлов. Сейчас на RAA посмотрел -
>> похоже ситуация не изменилась.
> `xsltproc` ;) Я серьезно, кстати.
Слишком дорого это будет стоить(в плане системных ресурсов) - куча
открытий/закрытий файлов.
--
Andrew Kulinich
IT Group
Project manager
Phone/Fax +380 (372) 58-43-10
e-mail: Andrew.Kulinich на itgrp.net
http://www.itgrp.net
Подробная информация о списке рассылки Ruby