سؤال

أنا عالق بشيء بسيط للغاية ولكن مزعج حقًا: لدي ملف XML مع عقدة واحدة ، حيث يتضمن المحتوى فواصل الخط و Whitspaces. للأسف لا أستطيع تغيير XML.

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

Acme Ltd. Fooproduct Foo Root :: Bar Catevory

وصلت إلى العقدة وأستطيع أن أقرأ منها دون مشكلة:

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 ("الفئة"). نص.

هل يعرف أي شخص كيفية تجريد النتيجة من خطوط الخطوط والصنابير أو المساحات هنا؟

بدلاً من ذلك ، يمكنني أن أفعل ذلك في الخطوة التالية ، حيث أقوم باكتشاف "Foocat" مثل

barcat = Category.find_by_foocat(foocat)

شكرا على المساعدة!

فال

هل كانت مفيدة؟

المحلول

يمكنك استخدم XSLT لإزالة جميع الأحرف غير الضرورية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top