'ElementTree'를 통해 Python에서 네임스페이스가 포함된 XML 구문 분석
다양한 데이터 소스로 작업하는 동안 네임스페이스가 포함된 XML을 접할 수 있습니다. 그러한 사례 중 하나는 네임스페이스 사용이 일반적인 RDF를 사용하여 게시된 온톨로지로 작업하는 것입니다. 이로 인해 Python의 ElementTree 라이브러리를 사용하여 이러한 XML을 구문 분석하려고 할 때 문제가 발생할 수 있습니다.
다음 XML을 고려하세요.
<rdf:RDF xml:base="http://dbpedia.org/ontology/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://dbpedia.org/ontology/"> <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague"> <rdfs:label xml:lang="en">basketball league</rdfs:label> <rdfs:comment xml:lang="en"> a group of sports teams that compete against each other in Basketball </rdfs:comment> </owl:Class> </rdf:RDF>
다음 코드를 사용하여 이 XML을 구문 분석하려고 하는 경우:
tree = ET.parse("filename") root = tree.getroot() root.findall('owl:Class')
다음에 네임스페이스가 있기 때문에 다음 오류가 발생합니다. XML:
SyntaxError: prefix 'owl' not found in prefix map
이 네임스페이스 문제를 해결하려면 .find(), .findall() 및 .iterfind() 메서드에 명시적인 네임스페이스 사전을 제공해야 합니다.
namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'} # add more as needed root.findall('owl:Class', namespaces)
이 네임스페이스 사전을 사용하면 ElementTree가 'owl:' 접두사에 대한 올바른 네임스페이스 URL을 조회하고 문제.
또는 우수한 네임스페이스 지원을 제공하고 요소의 .nsmap 속성에서 네임스페이스를 자동으로 수집하는 lxml 라이브러리 사용으로 전환할 수 있습니다.
위 내용은 Python의 ElementTree를 사용하여 네임스페이스로 XML을 구문 분석하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!