Python和XML处理

时间:2011-08-12 00:12:19

标签: python xml

我使用了urllib来获取以下数据:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<videos xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns:www="http://www.www.com"">
  <video type="cl">
    <cd>
      <src lang="music">http://www.google.com/ </src>
    </cd>
  </video>
</videos>

我希望得到http://www.google.com/,这是我的代码:

import xml.etree.ElementTree as etree
data='<?xml version="1.0" encoding="UTF-8" standalone="yes"?><videos xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:www="http://www.www.com""><video type="cl"><cd><src lang="music">http://www.google.com/ </src></cd></video></videos>'
tree = etree.fromstring(data)
geturl=tree.findtext('/video/cd/src').strip()
print geturl

我收到错误:

AttributeError: 'NoneType' object has no attribute 'strip'

显然,findtext失败了。我试过findtext('src'),也不会工作。

怎么了?

1 个答案:

答案 0 :(得分:2)

从路径中删除第一个正斜杠:video/cd/src

import xml.etree.ElementTree as etree
data='''<?xml version="1.0" encoding="UTF-8" standalone="yes"?><videos xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:www="http://www.www.com"><video type="cl"><cd><src lang="music">http://www.google.com/ </src></cd></video></videos>'''
tree = etree.fromstring(data)
geturl=tree.findtext('video/cd/src').strip()
print geturl

产量

http://www.google.com/

正斜杠表示绝对路径,元素上不允许这样做。

PS。您发布的数据中也存在语法错误:xmlns:www="http://www.www.com""最后有两个双引号...