>  기사  >  백엔드 개발  >  Python ElementTree에서 요소 위치에 대한 XML 네임스페이스를 무시하는 방법은 무엇입니까?

Python ElementTree에서 요소 위치에 대한 XML 네임스페이스를 무시하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 07:18:30512검색

How to Ignore XML Namespaces for Element Location in Python ElementTree?

Python ElementTree에서 요소 위치에 대한 XML 네임스페이스 무시

ElementTree 모듈에서는 XML 파일에서 특정 요소를 찾는 것이 어려울 수 있습니다. 제공된 예에 설명된 대로 네임스페이스를 사용합니다. findall 메소드를 사용할 때 각 태그 앞에 {http://www.test.com}을 포함시키는 것은 불편합니다.

해결책:

XML 문서 자체에 대한 보다 최적의 접근 방식은 XML을 구문 분석한 후 태그 이름을 수정하는 것입니다. 이를 통해 여러 네임스페이스 및 네임스페이스 별칭을 처리할 수 있습니다.

다음은 iterparse 함수를 사용하여 수정된 코드입니다.

<code class="python">from io import StringIO  # for Python 2 import from StringIO instead
import xml.etree.ElementTree as ET

with open('test.xml', 'r') as f:
    xml = f.read()

it = ET.iterparse(StringIO(xml))
for _, el in it:
    _, _, el.tag = el.tag.rpartition('}')  # strip ns

root = it.root</code>

_, _, el.tag = el.tag를 설정합니다. rpartition('}'), 네임스페이스(_{http://www.test.com})가 태그 이름에서 제거됩니다. 이를 통해 네임스페이스를 고려하지 않고 태그를 후속 처리할 수 있습니다. 결과적으로, findall 메소드:

<code class="python">el1 = root.findall("DEAL_LEVEL/PAID_OFF")</code>

는 원하는 네임스페이스 접두사가 없는 요소입니다.

위 내용은 Python ElementTree에서 요소 위치에 대한 XML 네임스페이스를 무시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.