2010-03-25 2 views
0

나는 아주 간단하지만 실제로 성가신 무엇인가 붙어있다 : 콘텐츠에 줄 바꿈과 whitspaces가 포함 된 xml 파일이 하나있다. 슬프게도 XML을 바꿀 수 없습니다.레일스 - 공백과 줄 바꿈에서 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")가 반환 한 문자열에 줄 바꿈과 탭 중지 또는 공백이 있습니다.

누구나 linebreaks 및 tap 또는 space에서 결과를 제거하는 방법을 알고 있습니까?

는 또한 내가 돕는

barcat = Category.find_by_foocat(foocat) 

감사처럼 'foocat'에서 발견 할 다음 단계에서 그것을 할 수 있습니다!

답변

0

당신은 use XSLT 할 수있는 모든 불필요한 문자를 제거합니다.

+0

안녕하세요 Santiiii, 아이디어를 주셔서 감사합니다! 이전에는 xslt를 사용하지 않았으며 테스트 해 보았습니다. 완성을 위해 : 실제로 원하는 노드에서 '.text) .strip'을 호출했습니다. cat = (product.css ("Category"). 텍스트) .strip 이유는 nokogiri를 사용한 나의 특정 설정이 그렇게 쉽게 만들었 기 때문입니다. –

+0

그것이 효과가있어 기쁩니다. 문안 인사 –