首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python和xml.etree解析XML

使用Python和xml.etree解析XML
EN

Stack Overflow用户
提问于 2014-08-18 14:27:11
回答 1查看 140关注 0票数 1

我有一个XML文件,我想使用Python的xml.etree读取其中的一些数据。

假设XML文件如下所示:

代码语言:javascript
复制
<a>
   <b>
      <c>
         <d>This is the text I want to retrieve</d>
      </c>
   </b>
</a>

我所做的是这样的:

代码语言:javascript
复制
document = ElementTree.parse('file.xml')
dToFind = document.find('d')
print(dToFind.text)

但它给了我以下错误:

代码语言:javascript
复制
    print(dToFind.text)
AttributeError: 'NoneType' object has no attribute 'text'

我做错什么了?我怎么才能修好它呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 14:36:46

可以使用 for more sophesticated parsingfind递归地查找节点。

在这种情况下:

代码语言:javascript
复制
dToFind = document.find('.//d')

文档指出使用xpath进行更结构化的解析--这将鼓励您研究这个问题。

演示

代码语言:javascript
复制
>>> from xml.etree import ElementTree as ET
>>> content = """<a>
...    <b>
...       <c>
...          <d>This is the text I want to retrieve</d>
...       </c>
...    </b>
... </a>
... """
>>> 
>>> xx = ET.fromstring(file) #you would be doing .parse()
>>> xx.find('d') #Returns None, as it finds only first level children
>>> xx.find('.//d')
<Element 'd' at 0xf1b550>
>>> d = xx.find('.//d')
>>> d.text
'This is the text I want to retrieve'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25365725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档