ElementTree의 "find" 및 "findall" 메서드에서 XML 네임스페이스 무시
ElementTree 모듈을 사용하여 XML 문서의 요소를 구문 분석하고 찾는 경우 , 네임스페이스는 복잡성을 초래할 수 있습니다. Python에서 "find" 및 "findall" 메서드를 사용할 때 네임스페이스를 무시하는 방법은 다음과 같습니다.
XML 문서에 ElementTree 모듈이 태그를 검색할 때 네임스페이스를 고려하게 만들 수 있는 네임스페이스가 포함된 경우 문제가 발생합니다. 이는 질문에 제공된 예에서 알 수 있듯이 예상치 못한 결과로 이어질 수 있습니다.
<code class="python">el1 = tree.findall("DEAL_LEVEL/PAID_OFF") # Return None el2 = tree.findall("{http://www.test.com}DEAL_LEVEL/{http://www.test.com}PAID_OFF") # Return element</code>
네임스페이스를 무시하려면 "find" 또는 " findall" 메소드. 이는 ElementTree의 iterparse() 메서드를 사용하여 달성할 수 있습니다.
<code class="python">import io from xml.etree import ElementTree as ET # Parse the XML document it = ET.iterparse(StringIO(xml)) # Iterate over each element and strip the namespace if present for _, el in it: _, _, el.tag = el.tag.rpartition("}") # strip ns # Get the modified root element root = it.root # Now, you can search for elements without namespaces el3 = root.findall("DEAL_LEVEL/PAID_OFF") # Return matching elements</code>
이 솔루션은 구문 분석된 문서의 태그를 수정하여 각 태그에 대한 네임스페이스 접두사를 수동으로 지정할 필요 없이 요소를 더 쉽게 찾을 수 있도록 합니다.
위 내용은 Python에서 ElementTree\의 \'find\' 및 \'findall\' 메서드를 사용할 때 XML 네임스페이스를 무시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!