加载中…
个人资料
麦兜搞IT
麦兜搞IT
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,533,161
  • 关注人气:531
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Python读取xml文档(遍历法)

(2010-04-17 15:27:33)
标签:

python

xml

dom

节点

it

分类: Python

    参考资料《dive into python

    Pythonxml文档的方法有多种,这里介绍用dom模块,需要下载PyXML- 0.8.4.win32-py2.5.exe库(我用的python2.5)。

    假如我们有个xml文档如下:example.xml

<?xml version="1.0" encoding="UTF-8"?>

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>

</BIT>

    首先,要解析xml文档,需要导入一个模块

>>> from xml.dom.minidom import parse

1)然后载入一个xml文档

>>> xmldoc = parse("J:/homeword/example.xml")

>>> print xmldoc.toxml()

<?xml version="1.0" ?>

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>

</BIT>

>>> 

上面是可以查看这个文档的内容。

Toxml方法打印出了node风格的xml,如果节点是Document结果,则打印出整个xml文档。否则只打印出本节点所属内容。

2)如何获取子节点

>>> xmldoc.childNodes

[<DOM Element: BIT at 0x1223af8>]

>>> 

    每一个node都有一个childNodes的属性,他是一个node对象的列表,注意的是,一个Document只有一个子节点,上例中就是BIT这个节点,它属于Document节点。

    因为是列表,所以也可以同用列表索引,xmldoc.childNodes[0]

>>> BIT_element = xmldoc.firstChild

>>> BIT_element

<DOM Element: BIT at 0x1223af8>

>>> print BIT_element.toxml()

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>

</BIT>

>>> 

3)获得某一个节点的文本

>>> BIT_element.childNodes

[<DOM Text node "

">, <DOM Element: GeneralDescription at 0x1223be8>, <DOM Text node "

">, <DOM Element: AMatrix at 0x1223e40>, <DOM Text node "

">]

>>>name = (BIT_element.childNodes[1]).childNodes[1]

>>> >>> name.childNodes[0].data

u'Matlab'

>>> 

    这种办法是比较笨的办法,如果对于大型的xml文档就不适应了。

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有