XML错误对象没有属性'cssselect'

时间:2013-04-05 10:19:42

标签: python xml django lxml

以下似乎没有正确解析xml数据或者做错了。

这是正在运行的代码。

来自lxml import etree    来自lxml.etree import fromstring

if request.POST:

    xml = request.POST['xml'].encode('utf-8')
    parser = etree.XMLParser(ns_clean=True, recover=True, encoding='utf-8')
    h = fromstring(xml, parser=parser)
    status = h.cssselect('itagg_delivery_receipt status').text_content()
    return HttpResponse(status)

错误:

AttributeError:'lxml.etree._Element'对象没有属性'cssselect'状态

这是正在发送的xml文档:

 <?xml version="1.1" encoding="ISO-8859-1"?>
<itagg_delivery_receipt>
<version>1.0</version>
<msisdn>447889000000</msisdn>
<submission_ref>
845tgrgsehg394g3hdfhhh56445y7ts6</
submission_ref>
<status>Delivered</status>
<reason>4</reason>
<timestamp>20050709120945</timestamp>
<retry>0</retry>
</itagg_delivery_receipt> 

我已经抛弃了str(h),它看起来像<element 0x7fd341e93870="" at="" itagg_delivery_receipt=""></element>

2 个答案:

答案 0 :(得分:1)

以下是使用xpath获取所需内容的方法:

>>> h.xpath('status/text()')
['Delivered']

所以在你的代码中有一个小帮助函数:

def first(seq,default=None):
  for item in seq:
    return item
  return default

...

status = first(h.xpath('status/text()'))

答案 1 :(得分:0)

在使用cssselect之前,您需要安装它

pip install cssselect