首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iterparse()解析xml文档

使用iterparse()解析xml文档
EN

Stack Overflow用户
提问于 2015-03-16 22:54:59
回答 1查看 196关注 0票数 2

我有一个很大的xml文件"abcd.xml“,大约800MB。如果用户输入的内容与作者或标题匹配,我想获取图书列表的信息。

我已经用一个小文件做到了这一点,我如何使用iterparse()来处理一个大文件呢?

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE dblp SYSTEM "dblp.dtd">
<dblp>
<article mdate="2011-01-11" key="journals/acta/Saxena96">
<author>Sanjeev Saxena</author>
<title>Parallel Integer Sorting and Simulation Amongst CRCW Models.</title>
<pages>607-619</pages>
<year>1996</year>
<volume>33</volume>
<journal>Acta Inf.</journal>
<number>7</number>
<url>db/journals/acta/acta33.html#Saxena96</url>
<ee>http://dx.doi.org/10.1007/BF03036466</ee>
</article>

编码:

代码语言:javascript
复制
import lxml.etree as ET
data = ET.parse('abcd.xml')
root = ET.fromstring(data)

title = raw_input('enter the name: ')
article = root.xpath('.//article[starts-with(title, "%s")]' % title)[0]

for prop in ['author', 'pages', 'year', 'volume', 'journal']:
    print article.findtext(prop)

输出结构:-

代码语言:javascript
复制
Sanjeev Saxena
Parallel Integer Sorting and Simulation Amongst CRCW Models.
607-619
1996
33
Acta Inf.
........
........
........
EN

回答 1

Stack Overflow用户

发布于 2015-03-17 02:50:42

raw_input()

  • Target

  • 通过lxml模块解析输入文件

  • 通过step2.

  • Iterate lxml标记从用户获取标题名称,该标记从步骤3中的每个项目标记中的用户输入开始<>H114>创建列表元组列表,保存result.
  1. Print结果中的所有

标记及其文本信息。

代码:

代码语言:javascript
复制
import lxml.etree as ET
root = ET.parse('input.xml')

title = raw_input('enter the name: ')
articles = root.xpath('.//article[starts-with(title, "%s")]' % title)
result = []
for article in articles:
    tmp = []
    for i in article.getchildren():
        tmp.append((i.tag, i.text))

    result.append(tmp)

#- Print result:
for i in result:
    print "\n"
    for j in i:
        print "%s:%s"%(j[0], j[1])

输出:

代码语言:javascript
复制
vivek@vivek:~/Desktop/stackoverflow/anna$ python 3.py 
enter the name: Parallel Integer Sorting and Simulation


author:Sanjeev Saxena
title:Parallel Integer Sorting and Simulation Amongst CRCW Models.
pages:607-619
year:1996
volume:33
journal:Acta Inf.
number:7
url:db/journals/acta/acta33.html#Saxena96
ee:http://dx.doi.org/10.1007/BF03036466


author:Sanjeev Saxena
title:Parallel Integer Sorting and Simulation Amongst CRCW Models.11
pages:607-619
year:1996
volume:33
journal:Acta Inf.
number:7
url:db/journals/acta/acta33.html#Saxena96
ee:http://dx.doi.org/10.1007/BF03036466

vivek@vivek:~/Desktop/stackoverflow/anna$ 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29079939

复制
相关文章

相似问题

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