python - 如何使用 Element.findall() 搜索标签并打印其值
问题描述
我决定冒险python v2.6.6
在其他选择中查找和打印文件中的特定tag
内容xml
。我最终得到了多个for..loop
我不满意的结果,我认为可能有更好的方法。
我在这里搜索,看起来Element.findall()
很有希望,但打印的是空值。这是示例文件 ( test.xml
)。
<?xml version='1.0' encoding='UTF-8'?>
<parent>
<first>
<a>123</a>
<b>abc</b>
<c>
<d>987</d>
<e>
<f>xxx</f>
<f>yyy</f>
<f>zzz</f>
</e>
</c>
</first>
<second>
<a>456</a>
<b>efg</b>
<c>
<d>345</d>
<e>
<f>ttt</f>
<f>hhh</f>
<f>www</f>
</e>
</c>
</second>
</parent>
我的目标是希望标签identify
和多个.print
<d>
<f>
这是我第一次尝试findall()
查找标签<b>
,但打印了空值..
import xml.etree.ElementTree as ET
root = ET.parse('test.xml').getroot()
b_tag = root.findall('first/b')
print b_tag
有经验的人可以python
指导我做错了什么,以便我更好地了解如何使用它api
吗?
解决方案
您的代码与 完美配合b_tag
,您只需要使用该.text
字段。所以,这是里面的所有信息<d>
,<f>
你想要的:
import xml.etree.ElementTree as ET
root = ET.parse('test.xml').getroot()
d_tags = root.findall('./*/c/d')
print([t.text for t in d_tags])
# ['987', '345']
f_tags = root.findall('./*/c/e/f')
print([t.text for t in f_tags])
# ['xxx', 'yyy', 'zzz', 'ttt', 'hhh', 'www']
推荐阅读
- java - 多态实例如何选择它的方法?
- javascript - 我无法让 setInterval 函数工作
- php - 32位平台上的long int问题
- python - 如何根据特定列对 MultiIndex Pandas 数据透视表进行排序
- android-studio - 在 Android Studio 中通过 Flutter 应用使用自定义代码片段(实时模板)
- r - 使用 dplyr 以可变顺序比较第一和第二排名
- html - 强制内联块中的两行
- prolog - 在 SWI-Prolog 中是否有一种简单的方法可以使用 REPL 将数字从一个基数转换为另一个基数?
- mysql - 将所有房间与所有其他房间进行比较(笛卡尔积)
- mysql - 在这个查询中解释 Max