[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