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