2010-01-04 5 views
1

저는 Python에 익숙하지 않아 유효성 검사없이 SAX 을 사용하여 XML 파일을 구문 분석하려고합니다.SAX/Python을 사용하여 XML 구문 분석 + 유효성 검사 없음

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE n:document SYSTEM "schema.dtd"> 
<n:document.... 

내가 파이썬 2.5.2로 구문 분석을 시도했다 : :

내 xml 파일의 머리는

from xml.sax import make_parser, handler 
import sys 

parser = make_parser() 
parser.setFeature(handler.feature_namespaces,True) 
parser.setFeature(handler.feature_validation,False) 
parser.setContentHandler(handler.ContentHandler()) 
parser.parse(sys.argv[1]) 

하지만 난 오류가있어 :

python doc.py document.xml 
(...) 
    File "/usr/lib/python2.5/urllib2.py", line 244, in get_type 
    raise ValueError, "unknown url type: %s" % self.__original 
ValueError: unknown url type: schema.dtd 

SAX 파서가 스키마를 찾는 것을 원하지 않습니다. 내가 어디서 잘못한거야? 감사합니다.

답변

4

expatreader는 DTD 외부 하위 집합을 외부 일반 엔터티로 간주합니다. 그래서 당신이 원하는 기능은 다음과 같습니다

parser.setFeature(handler.feature_external_ges, False) 

그러나, 그것은 존재하지 않는 URL에 DTD 외부 부분 집합을 가리키는 비트 사기입니다; 이것이 보여 주듯이, 그것을 읽는 파서의 검증 일 뿐만이 아닙니다.

+0

이렇게해도 문제가 해결되지 않았습니다. 나는 여전히 ValueError 알 수없는 URL 유형을 얻는다. 어쩌면 python3에서 뭔가 달라질 수 있습니다. – ThatAintWorking

+0

@ThatAintWorking 여러분이''를 포함해야합니다. "\ n"을 실제 캐리지 리턴으로 대체해야 할 수도 있습니다. – 16num

+0

@ 16num 죄송합니다. 더 이상이 문제의 컨텍스트를 기억하지 못합니다. – ThatAintWorking