2010-03-25 94 views
0

我被一些非常简单但却很烦人的东西卡住了: 我有一个包含换行符和空白处的节点的xml文件。 可悲的是我不能改变XML。Rails - 从空白和换行符剥离xml导入

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

ACME公司 Fooproduct 富根::酒吧类别

我得到的节点,可以从它没有麻烦阅读:

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(“Category”)。text返回的字符串中存在换行符和制表符停止符或空格。

有谁知道如何去除换行符和水龙头或空格的结果吗?

我也可以这样做,在接下来的步骤,在这里我做一个找到“foocat”像

barcat = Category.find_by_foocat(foocat) 

感谢您的帮助!

瓦尔

回答

0

你可以use XSLT删除所有不必要的字符。

+0

嗨Santiiii, 感谢您的想法!我之前没有使用任何xslt,它看起来很棒,并且为测试工作。为了完整性:我实际上最终在所需的节点上调用了'.text).strip'。 cat =(product.css(“Category”)。text).strip 原因是我用nokogiri设置的具体设置使得它更容易。 – 2010-03-29 15:18:19

+0

我很高兴它的工作。问候 – 2010-04-05 08:48:05