2014-02-27 4 views
0

오케이. 나는 이것이 중복 된 것을 안다.Python에서 XML 요소 가져 오기

그러나 저는 괜찮은 프로그래머입니다. 나는 이것을 2 시간 동안 시도해 본 결과 아무것도 얻지 못했습니다 !!

xml 파일의 맨 위 몇 줄은 다음과 같습니다. 여기

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">2</int> 
    <lst name="params"> 
     <str name="d">100</str> 
     <str name="sort">score asc</str> 
     <str name="fl"> 
         . 
         . 
         . 

은, 내가 얻고 자하는 것은이 경우 2 인 <int name="QTime"></int> 사이의 단지 숫자입니다.

어떻게하면됩니까? ElementTree을 사용했으며 문서가 끔찍합니다.

답변

1

문서 루트입니다 lxml.etree를 사용하고 <response> 가정, 당신은이 작업을 수행 할 수 있습니다 <file-like object>가 열린 file 개체 또는 StringIO::StringIO 객체, 등등 ...

elements을 할 수있는

import lxml.etree 
xml = lxml.etree.parse(<file-like object>) 
root = xml.getroot() 
elements = root.xpath("int[@name='QTime']") 
values = [int(x.text.strip()) for x in elements] 

<int name="QTime"> 요소의 목록이어야합니다. values은 정수 값의 해당 목록입니다.

<response>이 문서 루트가 아닌 경우 //response/int[@name='QTime']xpath에 대신 사용할 수 있습니다.

+1

'// int'는 모든 요소를 ​​검사하고 속도가 느리며 의도 한 것보다 많은 결과를 반환 할 수 있습니다. 이 트리의 최상위 요소라고 가정하면, 'int [@ name = "QTime"]' ' – tdelaney

+0

이 참으로 업데이트됩니다. – isedev