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
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. –
Je suis content que ça a marché. Cordialement –