Python에서 네임스페이스가 있는 XML 문서를 생성하는 방법
Python의 기본 내장 xml 패키지는 아직 네임스페이스(namespace) 선언을 직접 지원하지 않습니다. 따라서 네임스페이스가 포함된 XML 문서를 만들려면 네임스페이스를 일반 속성(attribute) 형태로 태그에 직접 추가해야 합니다.
네임스페이스를 속성으로 추가하는 예제
다음 예제는 xml.dom.minidom 모듈을 사용하여 네임스페이스가 포함된 XML 요소를 생성하는 과정을 보여줍니다.
import xml.dom.minidom
doc = xml.dom.minidom.Document()
element = doc.createElementNS('https://hello.world/ns', 'ex:el')
element.setAttribute("xmlns:ex", "https://hello.world/ns")
doc.appendChild(element)
print(doc.toprettyxml())
createElementNS() 메서드는 네임스페이스 URI와 접두사(prefix)가 붙은 태그 이름을 지정합니다. 그다음 setAttribute()를 통해 xmlns:ex 속성으로 네임스페이스를 명시적으로 선언하고, 완성된 요소를 문서에 추가한 뒤 출력합니다.
실행 결과
위 코드를 실행하면 다음과 같은 XML 문서가 생성됩니다.
<?xml version="1.0" ?> <ex:el xmlns:ex="https://example.net/ns"/>
출력 결과를 보면 ex라는 접두사가 네임스페이스 URI와 연결되어 정상적으로 선언된 것을 확인할 수 있습니다.
참고: 더 나은 대안
네임스페이스 처리가 자주 필요한 프로젝트라면 표준 라이브러리의 xml.etree.ElementTree를 활용하거나, 네임스페이스를 기본적으로 지원하는 서드파티 라이브러리인 lxml을 사용하는 것을 추천합니다. 특히 lxml은 네임스페이스 관련 작업을 훨씬 깔끔하고 안전하게 처리할 수 있어 복잡한 XML 문서를 다룰 때 유용합니다.