컨텍스트 : libxml-ruby gem을 사용하여 XML 파일을 구문 분석하고 있습니다. XPath find
메서드를 사용하여 노드 집합에 대한 XML 문서를 쿼리해야합니다. 그런 다음 각 노드를 개별적으로 처리해야하며 XPath find
메서드를 사용하여 다시 한 번 쿼리합니다.LIBXML-RUBY> Xpath 컨텍스트
문제 :
코드 예 :
require 'xml'
string = %{<?xml version="1.0" encoding="iso-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>}
xml = XML::Parser.string(string, :encoding => XML::Encoding::ISO_8859_1).parse
books = xml.find("//book")
books.each do |book|
price = book.find("//price").first.content
puts price
end
이를 내가 개별적으로 반환 된 노드를 조회하려고하면이는 XPath find
방법은 바로 노드가 아닌 전체 문서를 조회한다 스크립트는 29.99
을 두 번 반환합니다. XPath 컨텍스트를 설정하는 데는이 것이 있어야한다고 생각하지만 아직이를 수행하는 방법을 찾지 못했습니다.
XML 구문 분석에 Nokogiri를 사용하는 것이 좋습니다. Ruby의 기본 표준입니다. –
나는 실제로 Nokogiri를 사용하기 시작했고 똑같은 문제에 부딪쳤다. 나는 libxml-ruby로 바꿨지 만 그곳에 문제가 있기를 바라지 만 같은 문제가 계속된다. –
음 ... 문제가 생기면 라이브러리에 없다는 것을 알게됩니다. :-) 거기에 있었고, 너무 많은 시간을 기억해야했습니다. Nokogiri와 지팡이; 그것은 흔들린다. –