lxml的标记名称错误

时间:2011-11-02 05:41:55

标签: python lxml

我正在使用lxml来解析我从amazon产品广告API获得的xml。 树被解析为:

root=etree.XML(self.sendRequest(parameters))

当我使用root.tag或root.child.tag时,我总是得到类似的东西:

{http://webservices.amazon.com/AWSECommerceService/2005-10-05}RequestProcessingTime

标签名称中显示的链接实际上是根元素的属性:

<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">

但是,它似乎没有被正确解析。 有没有办法可以从标签中删除恼人的{...}?

1 个答案:

答案 0 :(得分:0)

大括号之间的部分是XML命名空间,它从元素的xmlns属性中读取。您无法摆脱它,因为这正是lxml所基于的元素树API的定义:所有标记名称都以花括号中的名称空间为前缀。

一个良好行为的XML解析器必须使用命名空间的一些概念来解决歧义,因为相同的标记名称可以出现在具有不同含义的不同命名空间中,并且单个文档可以包含来自多个命名空间的标记。

您的文档已正确解析,您只需要考虑程序中的命名空间。就是这样。

相关问题