2017-02-10 3 views
0

이미지 태그가 포함 된 SVG 문서가 있습니다. 나는 그것을 분석하고 노코 기리 모든 이미지 태그를 제거한 다음 다른 파일로 재 작성하는 것을 시도하고있다 :Nokogiri로 태그를 SVG 파일로 삭제하는 방법

doc = File.open("cartes_des_risques.svg") { |f| Nokogiri::XML(f) } 
doc.search('//image').each do |node| 
    node.remove 
end 
file = File.open("formmatted_map.svg", "w") 
file.write(doc) 

그러나 doc.search('//image')는 하늘의 배열을 돌려줍니다.

내가 수정하려고 오전 문서는 다음과 같이 이미지 태그 embedds 큰 SVG 파일입니다

<image a:adobe-opacity-share="1" width="338" height="338" xlink:href="data:image/png;base64,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 
H/1HgAEArVlNIehstlUAAAAASUVORK5CYII=" transform="matrix(0.24 0 0 0.24 839.2388 2258.6909)"> 
       </image> 

가 어떻게 노코 기리이 SVG 파일을 수정할 수는?

+0

'이미지'가 검색어에 지정해야하는 네임 스페이스에있는 것으로 의심됩니다. 파일이 네임 스페이스를 사용합니까? – matt

답변

0

<image> 태그를 자세히 살펴보십시오. SVG 내용은 xlink:href 매개 변수의 값의 일부입니다. 해당 태그를 삭제하면 SVG 데이터가 삭제되고 유용한 정보가 포함되지 않은 문서로 끝납니다. 따라서 원하는 작업이 아닐 수 있습니다.

여기에 내가, 파일을 읽을 노드를 제거하는 것입니다 방법을 보여주는 테스트되지 않은 코드의 다음 내용 쓰기 : 없음 이미지 정보가 포함 된 파일을 발생시키는 노드를 제거, 다시

doc = Nokogiri::XML(File.read('cartes_des_risques.svg')) 
doc.search('//image').remove 
file.write('formmatted_map.svg', doc) 

하지만를 :

require 'nokogiri' 

doc = Nokogiri::XML('<image/>') 
doc.search('//image').remove 
doc.to_xml # => "<?xml version=\"1.0\"?>\n"