2009-12-07 4 views
0

Hpricot을 사용하여 XML 파일을 처리하려고합니다. 무작위로 파일의 일부 따옴표를 표시하고 각 따옴표가 표시된 빈도를 추적하고 싶습니다. Hpricot을 사용하여 XML 파일 내의 단일 항목을 업데이트 할 수 있습니까 (아니면 나를 위해이 작업을 수행 할 수있는 다른 솔루션이 있습니까?) 아니면 항목이 표시 될 때마다 전체 XML 파일을 다시 작성해야합니까?Ruby에서 Hpricot을 사용하여 단일 XML 엔터티를 업데이트 하시겠습니까?

답변

1

이전에는 hpricot 대신 nokogiri로 작업 했었습니다 (상당히 빠름).

#!/usr/bin/env ruby 
require 'rubygems' 
require 'nokogiri' 

FNAME = "/home/kirill/books.xml" 

doc = Nokogiri::XML(open(FNAME)) 

doc.search('title').each {|node| 
    node.content=node.content.reverse 
} 

File.new(FNAME,'w').write doc unless doc.validate 

당신이 둔화이 될 것입니다 방법이 너무 커서 파일이 수행

나는 이런 일을 했습니까?

또는 내가 이해하지 못했던 다른 것을 원하십니까?

-2

내가 솔루션의 몇 참조 :

  1. 번 파일을 구문 분석하고 DB에 저장하고, 추가 속성을 사용을 viewed은 트랙을 유지합니다.
  2. DB를 사용할 수없는 경우이를 한 번 구문 분석하고 Yaml을 유지하십시오. 파싱하기 쉽고 읽고 쓰기가 쉽습니다. 매번 귀중한 실행 시간을 절약 해줍니다.

파일을 계속 업데이트하거나 파일을 원격 서버와 동기화하는 경우 DB에 정보를 저장하는 것이 가장 좋습니다.

관련 문제