2013-07-29 5 views
1

mediawiki API에서 다음과 같은 XML 응답이 있다고 가정합니다. 나는 위키 토픽이 수정 된 가장 빠른 날짜를 찾고 싶다.이 경우 2005-08-23이다. xml을 통해이를 파싱하는 방법은 무엇입니까? 나는 파이썬 btw를 사용하고있다. 이 XML을 통해 구문 분석하는 방법은 무엇입니까?

<?xml version="1.0"?> 
    <api> 
     <query-continue> 
     <revisions rvcontinue="46214352" /> 
     </query-continue> 
     <query> 
     <pageids> 
      <id>2516600</id> 
     </pageids> 
     <pages> 
      <page pageid="2516600" ns="0" title="!Kung language"> 
      <revisions> 
       <rev timestamp="2005-08-23T00:58:40Z" /> 
       <rev timestamp="2005-08-23T01:01:00Z" /> 
       <rev timestamp="2005-09-02T07:21:37Z" /> 
       <rev timestamp="2005-09-02T07:24:28Z" /> 
       <rev timestamp="2006-01-06T07:45:35Z" /> 
       <rev timestamp="2006-03-22T09:03:23Z" /> 
       <rev timestamp="2006-03-30T05:50:12Z" /> 
       <rev timestamp="2006-03-30T20:33:22Z" /> 
       <rev timestamp="2006-03-30T20:35:05Z" /> 
       <rev timestamp="2006-03-30T20:37:16Z" /> 
      </revisions> 
      </page> 
     </pages> 
     </query> 
    </api> 

나는 다음과 같은

revisions = text.getElementsByTagName("revisions") 
for x in revisions: 
    children = x.childNodes 
    for y in children: 
     print y.nodeValue 

을 시도했지만이 모든 수행은 인쇄 없음입니다.

+0

어떤 파서를 사용합니까? lxml? – jsalonen

+0

xml.dom.minidom.parseString 함수를 사용했습니다. – user1943079

+0

[wikitools] (http://code.google.com/p/python-wikitools/)와 같은 API에 액세스하기 위해 라이브러리를 사용하지 않는 이유는 무엇입니까? – svick

답변

1

나는 XPath 식으로 LXML 사용합니다 : 코드에 관해서는

from lxml import etree 

root = etree.fromstring(xml) 
timestamps = root.xpath('//rev/@timestamp') 

, 당신은 요소의 속성을받지 못하고있다. 이를 수행하려면 getAttribute :

print y.getAttribute('timestamp') 
관련 문제