2010-03-25 22 views
0

Je suis coincé avec quelque chose d'assez simple mais vraiment énervant: J'ai un fichier xml avec un noeud, où le contenu inclut des sauts de ligne et des espaces blancs. Malheureusement, je ne peux pas changer le xml.Rails - strip xml import depuis un espace et un saut de ligne

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

ACME Ltd. Fooproduct Foo :: Bar Racine Catégorie

je reçois au nœud et peut lire sans peine:

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 

Il en résulte :

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

Évidemment, il y a des sauts de ligne et des tabulations ou des espaces dans la chaîne retournée par product.css ("Category"). Text.

Est-ce que quelqu'un sait comment supprimer le résultat des sauts de ligne et des taps ou des espaces ici?

Sinon je pourrais le faire à l'étape suivante, où je fais une découverte sur « FooCat » comme

barcat = Category.find_by_foocat(foocat) 

Merci de nous aider!

Val

Répondre

0

Vous pourriez use XSLT pour supprimer tous les caractères inutiles.

+0

Salut Santiiii, merci pour l'idée! Je n'avais jamais utilisé de xslt auparavant et ça a l'air génial et j'ai travaillé pour les tests. Pour être complet: j'ai fini par appeler '.text) .strip' sur le noeud désiré. cat = (product.css ("Category"). Text) .strip La raison en est que ma configuration spécifique avec nokogiri m'a facilité la tâche. –

+0

Je suis content que ça a marché. Cordialement –