Python读取xml文档(遍历法

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文档就不适应了。


# -*- coding:utf-8 -*-



from  xml.etree import ElementTree as ET
# r = ET.parse('web.xml')
# print(r)
from xml.dom.minidom import parse

xmldoc = parse("web.xml")

def printtree(p):
    print(p)
    if p.hasChildNodes()==0:
        return

    else:
        for x in p.childNodes:
            printtree(x)



if __name__=="__main__":

    # xmldoc2 = parse("web.xml")

    # if xmldoc.toxml()==xmldoc2.toxml():
    #     print 1
    # else:
    #     print(2)
    print("***************************")

    # printtree(xmldoc.childNodes[0])
    print(xmldoc.toxml())

    # print(p)
    # printtree(p)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值