使用lxml,python获取最后一个(最新的)元素

时间:2010-11-17 17:00:23

标签: python django django-views lxml

嘿大家,过去几天我在试图解决我的问题时得到了一些惊人的帮助。我只有最后一个问题(我希望):)

我正在尝试从我的xml中获取最后一个元素并将其放在变量中。我正在使用django,python和lxml库。

我想要做的是,浏览我从API调用中获得的XML,找到最新的项目(它将具有最大的ID号),然后将其分配给存储在我的数据库中的变量。我在找到如何找到最新,最新的元素时遇到了一些麻烦。

以下是代码段:

req2 = urllib2.Request("http://web_url/public/api.php?path_info=/projects&token=#########")
        resp = urllib2.urlopen(req2)
        resp_data = resp.read()
        if not resp.code == '200' and resp.headers.get('content-type') == 'text/xml':
          # Do your error handling.
          raise Exception('Unexpected response',req2,resp)
        data = etree.XML(resp_data)
        #assigns the api_id to the id at index of 0 for time being,  using the // in front of project makes sure that its looking at the correct node inside of the projects structure
        api_id = int(data.xpath('//project/id/text()')[0])
        project.API_id = api_id
        project.save()

截至目前,它将元素放在[0]并存储ID就好了,但我需要最新的/最新的/ etc元素。

谢谢,

史蒂夫

1 个答案:

答案 0 :(得分:5)

[0]更改为[-1],以选择列表中的最后元素:

api_id = int(data.xpath('//project/id/text()')[-1])

请注意,如果最大值不在列表末尾,则可能无法为您提供最大 id值。

要获得最大的id,您可以这样做:

api_id = max(map(int,data.xpath('//project/id/text()')))