解析XML文件etree模块

时间:2011-10-19 17:21:45

标签: python xml

我正在使用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>

2 个答案:

答案 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