我正在使用Etree模块读取XML文件。我正在使用以下代码来打印<page>和<title>标记的值。我的代码运行得很好。但是我想要一点零钱。如果<page id='...'>属性id存在,则打印标记的值。有可能吗?谢谢
import xml.etree.cElementTree as etree
from pprint import pprint
tree = etree.parse('find_title.xml')
for value in tree.getiterator(tag='title'):
print value.text
for value in tree.getiterator(tag='page'):
pprint(value.attrib)这是我的xml文件。
<mediawiki>
<siteinfo>
<sitename>Wiki</sitename>
<namespaces>
<namespace key="-2" case="first-letter">Media</namespace>
</namespaces>
</siteinfo>
<page id="31239628" orglength="6822" newlength="4524" stub="0" categories="0" outlinks="1" urls="10">
<title>Title</title>
<categories></categories>
<links>15099779</links>
<urls>
</urls>
<text>
Books
</text>
</page>
</mediawiki>发布于 2011-10-20 01:37:06
for el in tree.getiterator(tag='page'):
page_id = el.get('id', None) # returns second arg if id not exists
if page_id:
print page_id, el.find('title').text
else:
pprint(el.attrib)编辑:更新为备注:“谢谢,我可以同时打印page_id和标题吗?意思是31239628 -标题”
发布于 2011-10-20 01:54:02
element.get()方法用于检索标记中的选项属性值:
>>> page_id = tree.find('page').get('id')
>>> if page_id:
print page_id
31239628https://stackoverflow.com/questions/7825361
复制相似问题