【发布时间】:2013-04-05 10:19:41
【问题描述】:
以下内容似乎无法正确解析 xml 数据或做错了什么。
这是正在运行的代码。
从 lxml 导入 etree 从 lxml.etree 从字符串导入
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>
【问题讨论】:
-
我认为您不能在 xml 文档上使用 cssselect。如果你从 lxml.html 导入你会得到 cssselect,但我不知道这是否适合你的 XML 文件。