Rails - удалить импорт xml из пробелов и разрывов строки

Я застрял в чем-то довольно простом, но действительно раздражающем: у меня есть XML-файл с одним узлом, в котором содержимое включает разрывы строк и пробелы. К сожалению, я не могу изменить xml.

<?xml version="1.0" encoding="utf-8" ?>
<ProductFeed>

ACME Ltd. Fooproduct Foo Root :: Категория Бар

Я добираюсь до узла и могу без проблем читать с него:

url = "http://feeds.somefeed/feed.xml.gz"
@source = open((url), :http_basic_authentication=>["USER", "PW"])
@gz = Zlib::GzipReader.new(@source)
@result = @gz.read
@doc = Nokogiri::XML(@result)
@doc.xpath("/ProductFeed/Vendors/Vendor").each do |manuf|
vendor = manuf.css("Name").first.text
manuf.xpath("//child::Product").each do |product|   

  product_name = product.css("Name").text
  foocat = product.css("Category").text

  puts "#{vendor} ---- #{product_name} ---- #{foocat} "
 end
end

Это приводит к:

ACME Ltd. ---- Fooproduct ----
                                      Foo Root :: Bar Category

Очевидно, что в строке, возвращаемой product.css ("Категория"). Text, есть разрывы строк и табуляции или пробелы.

Кто-нибудь знает, как прямо здесь убрать результат с разрывов строк, касаний или пробелов?

В качестве альтернативы я мог бы сделать это на следующем шаге, где я найду на foocat, например

barcat = Category.find_by_foocat(foocat)

Спасибо за помощь!

Вал


person val_to_many    schedule 25.03.2010    source источник


Ответы (1)


Вы можете использовать XSLT для удаления всех ненужных символов.

person Santiago Cepas    schedule 25.03.2010
comment
Привет, Santiiii, спасибо за идею! Раньше я не использовал xslt, он отлично выглядит и работал для тестирования. Для полноты: я фактически вызвал '.text) .strip' на желаемом узле. cat = (product.css (Category) .text) .strip Причина в том, что моя конкретная установка с nokogiri упростила этот путь. - person val_to_many; 29.03.2010