免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7622 | 回复: 5
打印 上一主题 下一主题

[有趣的Python 5] XML文件解析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-06 07:45 |只看该作者 |倒序浏览
这次的学习目标是搞清楚基本的xml解析在Python的流程。

我准备解析下面这个文档(关于xml的知识可以到http://www.w3.org上查看相关的Recommendations):
代码:

  1. <catalog>;
  2.   <book isbn="1-56592-724-9">;
  3.     <title>;The Cathedral & the Bazaar</title>;
  4.     <author>;Eric S. Raymond</author>;
  5.   </book>;
  6.   <book isbn="1-56592-051-1">;
  7.     <title>;Making TeX Work</title>;
  8.     <author>;Norman Walsh</author>;
  9.   </book>;
  10.   <!-- imagine more entries here... -->;
  11. </catalog>;
复制代码



Python的标准模块里包含了xml 处理的module。我们这次用的是xml.dom.minidom,一个迷你版的DOM API
代码:

  1. #! /usr/bin/python

  2. import xml.dom.minidom
  3. from xml.dom.minidom import Node

  4. doc = xml.dom.minidom.parse("books.xml")

  5. mapping = {}
  6. for node in doc.getElementsByTagName("book"):
  7.     isbn = node.getAttribute("isbn")
  8.     L = node.getElementsByTagName("title")
  9.     for node2 in L:
  10.         title = ""
  11.         for node3 in node2.childNodes:
  12.             if node3.nodeType == Node.TEXT_NODE:
  13.                 title += node3.data
  14.                 mapping[isbn] = title
  15.                 # mapping now has the same value as in the SAX example:
  16.                 print(mapping)
复制代码


通过这个程序,可以看到解析xml的文件的过程
minidom.parse返回的就是一个xml.dom.Document类型的实例。其实就是DOM中定义的Document了。通常的DOM的操作都是通过这个类来完成,比如例子中的建立ISBN和书名的对应关系表。对DOM的API,大家可以查看相关的文档。

同时,这次引入了一个新的控制结构,就是for-loop。这个和C和Java的for循环有些区别(Java在5.0中也引入了这种循环)。这个循环是for-each-in格式的。而不是传统的以初始值,步进值和中止条件控制循环过程的。

论坛徽章:
0
2 [报告]
发表于 2005-06-06 08:30 |只看该作者

[有趣的Python 5] XML文件解析

娃哈哈,讲的还很细,谢了!

论坛徽章:
0
3 [报告]
发表于 2005-06-06 12:07 |只看该作者

[有趣的Python 5] XML文件解析

dom模式解释xml十分方便,不过性能就十分差了,我一个5m的数据xml好像解释了20分钟还没有处理完。
如果是大的数据xml还是建议用expat,用起来也很方便。

论坛徽章:
0
4 [报告]
发表于 2005-06-06 14:19 |只看该作者

[有趣的Python 5] XML文件解析

sax的效率确实比DOM要快的多

论坛徽章:
0
5 [报告]
发表于 2005-12-15 08:43 |只看该作者
sax怎么用啊?

论坛徽章:
0
6 [报告]
发表于 2013-04-26 14:27 |只看该作者
呵呵,讲的还不错哦。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP