首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析XML文件etree模块

解析XML文件etree模块
EN

Stack Overflow用户
提问于 2011-10-20 01:21:45
回答 2查看 226关注 0票数 0

我正在使用Etree模块读取XML文件。我正在使用以下代码来打印<page><title>标记的值。我的代码运行得很好。但是我想要一点零钱。如果<page id='...'>属性id存在,则打印标记的值。有可能吗?谢谢

代码语言:javascript
复制
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文件。

代码语言:javascript
复制
 <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-20 01:37:06

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-10-20 01:54:02

element.get()方法用于检索标记中的选项属性值:

代码语言:javascript
复制
>>> page_id = tree.find('page').get('id')
>>> if page_id:
        print page_id

31239628
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7825361

复制
相关文章

相似问题

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