> 백엔드 개발 > 파이썬 튜토리얼 > Python의 ElementTree를 사용하여 네임스페이스로 XML을 구문 분석하려면 어떻게 해야 합니까?

Python의 ElementTree를 사용하여 네임스페이스로 XML을 구문 분석하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-12-30 08:44:09
원래의
996명이 탐색했습니다.

How Can I Parse XML with Namespaces Using Python's ElementTree?

'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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿