2014-11-19 4 views
0

구문 분석이 필요한 xml 문서가 있지만 매우 불안해합니다. 다음은 XML 파일의 일부입니다.XML에서 Python2 추출 태그

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

요소 태그 만 인쇄하고 싶습니다. 나는이 코드 형식의 파이썬 문서를 가지고이 작업을 수행한다. 파이썬 인터프리터에서이 명령을 실행합니다.

tree = ET.parse('pom.xml') 
root = tree.getroot() 
root = ET.fromstring(data) 
root.tag 

root.tag 반환이

{http://maven.apache.org/POM/4.0.0}project 

예상되어 그 결과 단지

project 

?

+0

'데이터'란 무엇입니까? –

+0

나는 종결 태그를 찾지 못했습니다. –

답변

1
파이썬 데이터가 손실되지 않습니다 따라서 선언 된 네임 스페이스를 유지하고 방식으로 XML을 구문 분석되기 때문에 예상 된 결과가 당신이 볼 {http://maven.apache.org/POM/4.0.0}project 단지 project :

하지

은위한 공간 수식 명입니다 꼬리표.

태그 시작이에 네임 스페이스 접두사가 없더라도 바로 뒤에 xmlns="http://maven.apache.org/POM/4.0.0" 특성은 명시 적 네임 스페이스 접두사가없는 모든 태그가 해당 네임 스페이스에 속하도록 선언합니다.

네임 스페이스가 정규화되지 않은 이름을 원한다면 물론 tag_name = element.tag.split("}", 1)[-1]을 사용할 수도 있습니다. (이 때문에 -1 색인에 비 공간 수식 이름에 대한 안전합니다.)

물론 당신은 재귀 ElementTree 트리를 걸을 수 있고, 위의 표현으로 자신의 비 공간 수식 이름으로 모든 tag.name의 교체 네가 정말로 원한다면.

+0

감사합니다, 당신의 대답은 완전하고 내 질문에 대한 당신의 이해가 완벽합니다. 나는 그것을 더 잘 물을 수 있었지만. – titus