두 노코 기리의 CSS와 XPath에 접근 여러 태그를 지정할 수 있습니다 .. 나에게 아주 가까이 보인다. 문서의 page
태그의 모든 태그를 통해 걸어보다는 :
require 'nokogiri'
doc = Nokogiri::XML('
<xml>
<body>
<image>image</image>
<text>text</text>
<video>video</video>
<other>other</other>
<image>image</image>
<text>text</text>
<video>video</video>
<other>other</other>
</body>
</xml>')
이 검색 사용하는 CSS는 다음과 같습니다
doc.search('image, text, video').each do |node|
case node.name
when 'image'
puts node.text
when 'text'
puts node.text
when 'video'
puts node.text
else
puts 'should never get here'
end
end
# >> image
# >> image
# >> text
# >> text
# >> video
# >> video
주의 그것은 CSS 접근이 지정하는 순서에 태그를 반환합니다. 문서에서 태그의 순서를해야하는 경우에는 XPath를 사용할 수 있습니다 모든 검색이 루비의 처리에 필요한 노드 만 반환 libXML 발생하기 때문에 두 경우 모두
doc.search('//image | //text | //video').each do |node|
puts node.text
end
# >> image
# >> text
# >> video
# >> image
# >> text
# >> video
을 프로그램이 빠르게 실행한다 . 당신이 <page>
태그 내에서 검색을 제한해야하는 경우
당신은 그 아래 검색하십시오 page
노드를 찾기 위해 정면 검색을 수행 할 수 있습니다
doc.at('page').search('image, text, video').each do |node|
...
end
또는
doc.at('//page').search('//image | //text | //video').each do |node|
...
end
감사합니다. 실제로 일치를 사용하여 직접 해결할 수 있습니까? (selector) method :) – Tronic