2016-09-13 2 views
0

Ruby on Rails 4.2.7에서 Nokogiri를 사용하고 있습니다. "범위"라는 이름을 가진 다른 요소 내의 모든 "옵션"요소를 찾고 싶습니다. 나는 Nokogiri의 명명 된 요소 내에서 요소를 찾으려고 할 때 "Invlaid 표현식"가져 오기

response = http.request(req) 
    doc = Nokogiri::HTML(response.body) 
… 
options = doc.xpath(“//range option") 

을 시도하지만 나에게 그것은 당신이 원하는 것을 정확히 분명하지 않다 오류

Error during processing: Invalid expression: //range option 
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:165:in `evaluate' 
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:165:in `block in xpath' 
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:156:in `map' 
+0

스택 오버플로에 오신 것을 환영합니다. "[mcve]"를 읽으십시오. 우리가 당신을 도울 수있는 최소한의 입력 HTML 예제가 없습니다. 우리가 같은 HTML을 자갈지게 만드는 것은 다른 사람들을 돕는 방향으로 갈 수있는 시간 낭비입니다. 실제로 HTML을 XML로 구문 분석하려고합니까? –

답변

0

을주고있다, 그러나 이것은 도움이 될 수 있습니다. 이에

묵상 :

require 'nokogiri' 

doc = Nokogiri::XML('<root><range><option>1</option><option>2</option></range></root>') 

doc.search('range option') # => [#<Nokogiri::XML::Element:0x3ffc64544e1c name="option" children=[#<Nokogiri::XML::Text:0x3ffc64544c3c "1">]>, #<Nokogiri::XML::Element:0x3ffc64544a5c name="option" children=[#<Nokogiri::XML::Text:0x3ffc6454487c "2">]>] 
doc.search('range option').map(&:to_xml) # => ["<option>1</option>", "<option>2</option>"] 

search 문서를 걸어 선택기에 대한 일치하는 모든 요소를 ​​반환합니다. CSS range option<option> 태그를 포함하는 모든 <range>을 찾고 NodeSet에 <option> 노드를 반환합니다. 그 시점에서 당신은 당신의 마음의 내용에 접을 수 있습니다.

+0

"range '라는 이름의 요소를 말하면,"name "이라는 속성이"range "와 같은 요소를 의미합니다. 말이 돼? – Dave

+0

정보를 처음에 작성한 것처럼 질문에 추가해야합니다. 텍스트에 "편집"또는 "업데이트"태그를 사용하지 마십시오. 우리가 알기를 원할 경우 언제 변경되었는지 알 수 있습니다. 당신이 말하는 것을 보여주는 최소한의 HTML 샘플은 설명보다 훨씬 더 의미가 있습니다. 그림은 천 단어의 가치가있다. –