我正在使用Etree模块读取XML文件。我使用以下代码打印<page>
和<title>
标记的值。我的代码工作正常。但我想要的改变很少。如果<page id='...'>
属性id存在,则打印tag的值。可能吗?谢谢
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>
答案 0 :(得分:1)
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 - 标题”
答案 1 :(得分:1)
element.get()方法用于检索标记中的选项属性值:
>>> page_id = tree.find('page').get('id')
>>> if page_id:
print page_id
31239628