2011-08-03 2 views
1

와 문서의 모든 부모는 그와 같은 문서가 있습니다추출물 노코 기리

<DL><a lot of tags>...<H3>Entry 1</H3><a lot of tags>...</DL> 
<DL><a lot of tags>...<H3>Entry 2</H3><a lot of tags>... 
    <DL><a lot of tags>...<H3>Entry 21</H3><a lot of tags>... 
     <DL><a lot of tags>...<H3>Entry 211</H3><a lot of tags>...</DL> 
    </DL> 
</DL> 
<DL><a lot of tags>...><H3>Entry 3</H3><a lot of tags>...</DL> 

내가 모든 '항목을 찾으려면을하고 그것을 추적 코드를 쉽게 :

@doc=Nokogiri::HTML(@file) 
@doc.css('DL>h3').each do |node| puts node.text end 

어떻게 나는 어떤 입장든지를위한 H3 부모의 명부를 추출합니까? 나는 관계를 반환 '부모', 즉 같은 방법이 싶습니다 entry211.parent을 ==>/입력 2/항목 21/

답변

1

당신은 단순히 각 h3 요소

의 부모 요소를 원하는 경우
@doc.css('DL>h3').collect(&:parent) 

트릭을 수행해야합니다. 당신이 h3 요소의 조상 인 dl 요소의 자식 인 모든 h3 요소를 할 수 있습니다처럼

그러나, 그것은 보인다. 나는 그것을 이해 한 경우 구조가 제대로이 각 h3 요소 조상의 dl 요소의 후손 인 h3 요소가 포함 된 Array을 포함하는 당신에게 Array을 제공

@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') } 

할 수 있어야합니다. 혼란스러워? 나는 확신합니다 :) 예를 들어

, 엔트리 (211) h3에 대한 샘플 HTML 결과 사용

@doc.css('dl>h3').collect { |h3| h3.ancestors('dl').css('h3') }[3].collect(&:text) 
#=> ["Entry 211", "Entry 21", "Entry 2"] 

당신이 원하는 것을 충분히이 가까이 있습니다?

관련 문제