2014-05-22 4 views
1

루비에서 큰 (4GB) xml 파일을 구문 분석해야하며, nokogiri를 사용하는 것이 좋습니다. 나는 많은 코드를 사용하여 exampled를 보았다.루비에서 큰 xml 파일을 구문 분석하는 방법

File.open(path) 

그러나이 경우에는 너무 많은 시간이 걸린다. 파일을로드하지 못하도록 노드별로 XML 노드를 읽는 옵션이 있습니까? 또는 그러한 대용량 파일을 분석하는 가장 빠른 방법은 무엇입니까? 보다도, 필

+1

https://github.com/ohler55/ox – bjhaid

답변

2

당신은 Nokogiri::XML::SAX

색소폰 스타일 파서 다음, 우리가 관심있는 이벤트에 대한 파서를 말하고, 을 파서를 작성 을 제공하는 것입니다 작동하는 기본적인 방법을 사용하여 시도 할 수 있습니다 파서가 처리 할 XML을 파서한다. 파서는 에 대해 알리려고하는 이벤트가 발생하면 알려줍니다.

+0

좋아,하지만 어떻게 내가 그런 읽습니까 큰 파일. 내가 말했듯이 file.open이 너무 오래 걸린다. – dc10

+2

'File.open'은 파일을 실제로 _read_하지 않고 그냥 읽는 스트림을 열어 놓는다. –

+0

그럼 Mike 파일에 Methode가있는 파일을 읽을 수있다. each_line? – dc10

0

나는 LibXMLhttp://xml4r.github.io/libxml-ruby/ (require 'xml')과 LibXML :: XML :: 리더 API로 이런 일을한다. SAX보다 간단하고 거의 모든 것을 만들 수 있습니다. REXML도 비슷한 API를 포함하지만 꽤 버그가 있습니다. 언급 한 API 나 SAX와 같은 스트림 API는 거대한 파일에 문제가 없어야합니다. 나는 Nokogiri를 테스트하지 않았다.

관련 문제