Scala의 InputStream
에서 XML 문서를로드하고 싶습니다. 따라서 scala.xml.XML.load(is: InputStream): scala.xml.Elem
을 사용하고 있습니다.scala.xml.XML에 대한 DTD 유효성 검사를 비활성화하십시오.
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="10.000000pt" height="10.000000pt" viewBox="0 0 10.000000 10.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,10.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M14 73 c2 -10 11 -20 20 -21 13 -3 17 2 14 14 -4 25 -37 31 -34 7z"/>
<path d="M67 83 c-4 -3 -7 -15 -7 -25 0 -13 -7 -18 -26 -18 -14 0 -23 -4 -19
-10 17 -28 75 9 75 47 0 14 -12 17 -23 6z"/>
<path d="M74 21 c-5 -5 -22 -11 -39 -14 -27 -4 -27 -4 7 -6 20 0 40 4 43 10 9
14 1 21 -11 10z"/>
</g>
</svg>
내 문제가되는 InputStream를 구문 분석 짜증나 인, 약 15 초 정도 소요된다 :
XML 문서 Potrace에서 오는이처럼 보이는 SVG 파일입니다.
나는 파일에서 <!DOCTYPE>
을 삭제할 때 지연이 없다는 것을 알아 냈습니다. 그래서 아마도 SAXParser
은 <!DOCTYPE>
에 DTD를 다운로드하여 문서가 유효한지 확인합니다.
문서의 유효성을 검사하지 않기 위해 Scala의 XML.load
(아마도 XML.withSAXParser
을 사용하여)을 어떻게 구성 할 수 있습니까?
내가 그은 XML.load를 확인할 수 있으며, XML.loadString 모든 구문 분석에 DTD를 다운로드하는 방법은 다음과 같습니다이다. DTD를 호스팅하는 서버가 다운되었을 때 503 개의 오류로 인해 구문 분석 오류가 발생하기 시작했습니다. :( – Jono