xml:

<?xml version='1.1' encoding='utf-8'?>
<!--this is a test about xml-->
<databaselist type='oracle'>
    <database userArea='suzhou'>
        <ip>10.192.128.88</ip>
        <name>'xiasam'</name>
        <passwd>!QAZ2wsx</passwd>
    </database>
    <database userArea='BeiJing'>
        <ip>10.192.128.89</ip>
        <name>'wu li'</name>
        <passwd>3edc$RFV</passwd>
    </database>
</databaselist>

#coding=utf-8

def getInfo(xml_file):
    from xml.dom.minidom import parse
    DOMTree=parse(xml_file)
    databaselist=DOMTree.documentElement
    #print databaselist
    result=[]
    databaselists=databaselist.getElementsByTagName('database')
    for i in databaselists:#
        for j in i.childNodes[1:6:2]:
            print j.tagName,j.childNodes[0].data
            result.append("%s : %s"%(j.tagName,j.childNodes[0].data))
    return result

print getInfo(r"d:\\database_test.xml")

c:\Python27\Scripts>python task_test.py
ip 10.192.128.88
name 'xiasam'
passwd !QAZ2wsx
ip 10.192.128.89
name 'wu li'
passwd 3edc$RFV
[u'ip : 10.192.128.88', u"name : 'xiasam'", u'passwd : !QAZ2wsx', u'ip : 10.192.128.89', u"name : 'wu li'", u'passwd : 3edc$RFV']

下边是调试代码(注释)

#coding=utf-8

def getInfo(xml_file):
    from xml.dom.minidom import parse
    DOMTree=parse(xml_file)
    databaselist=DOMTree.documentElement
    #print databaselist
    result=[]
    databaselists=databaselist.getElementsByTagName('database')
    for i in databaselists:
        print "i:",i
        for j in i.childNodes[1:6:2]:
            print "j:",j
            print "j.tagName:",j.tagName,"j.childNodes[0].data:",j.childNodes[0].data
            result.append("%s : %s"%(j.tagName,j.childNodes[0].data))
    return result

print getInfo(r"d:\\database_test.xml")

c:\Python27\Scripts>python task_test.py
i: <DOM Element: database at 0x2a06648>
j: <DOM Element: ip at 0x2a06760>
j.tagName: ip j.childNodes[0].data: 10.192.128.88
j: <DOM Element: name at 0x2a06800>
j.tagName: name j.childNodes[0].data: 'xiasam'
j: <DOM Element: passwd at 0x2a068a0>
j.tagName: passwd j.childNodes[0].data: !QAZ2wsx
i: <DOM Element: database at 0x2a06968>
j: <DOM Element: ip at 0x2a06a80>
j.tagName: ip j.childNodes[0].data: 10.192.128.89
j: <DOM Element: name at 0x2a06b20>
j.tagName: name j.childNodes[0].data: 'wu li'
j: <DOM Element: passwd at 0x2a06bc0>
j.tagName: passwd j.childNodes[0].data: 3edc$RFV
[u'ip : 10.192.128.88', u"name : 'xiasam'", u'passwd : !QAZ2wsx', u'ip : 10.192.128.89', u"name : 'wu li'", u'passwd : 3edc$RFV']

python xml练习:从database.xml文件取databaselist的ip、name、passwd,写入列表的更多相关文章

  1. python中用ElementTree.iterparse()读取xml文件中的多层节点

    我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 ...

  2. Python—使用xm.dom解析xml文件

    什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...

  3. 【python小随笔】python 解析xml数据的新手大坑>>抓取多重标签,遍历各标签的数据

    xml文档: <GetMatchingProductResult ASIN="B071LF9R6G" status="Success">...< ...

  4. Python中xml.etree.ElementTree读写xml文件实例

    import osimport xml.etree.ElementTree as ET'''Python 标准库中,提供了6种可以用于处理XML的包,本文举实例说明第6种1.xml.dom2.xml. ...

  5. python进阶(十七)xml(下)

    1.XML简介 xml用到的地方:tomcat配置文件 1) xml 指可扩展标记语言(Extensible Markup Language) 2) xml 被设计用于结构化.存储和传输数据 3) x ...

  6. 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess

    json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] ...

  7. Python中使用ElementTree解析xml

    在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...

  8. 小白的Python之路 day5 模块XML特点和用法

    模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...

  9. python xml.dom模块解析xml

    1. 什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version=&q ...

随机推荐

  1. 涨知识,涨知识 :ThinkPHP框架下Where条件查询Mysql数据库某字段是否为空

    代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data ...

  2. Spark Streaming 在数据平台日志解析功能的应用

    https://mp.weixin.qq.com/s/bGXhC9hvDj4lzK7wYYHGDg 目前,我们使用Filebeat监控日志产生的目录,收集产生的日志,打到logstash集群,接入ka ...

  3. 得到scp命令的完整路径

    奇怪的crontab 遇上shell scp不执行了-CSDN论坛 https://bbs.csdn.net/topics/390593780

  4. HTML标签_head标签

    HTML标签分为两种,自闭合标签和主动闭合标签:没有另一半 自动闭合标签,有另一半叫主动闭合标签. 自动闭合标签,只有开头没有结尾,即没有另一半:如<meta charset="UTF ...

  5. Arctic Network---poj2349 最小生成树

    http://poj.org/problem?id=2349 题意:有n个点给出坐标,点和点之间可以用无线电或者卫星通信,每个点都有无线电收发器可进行无线电通信,但是只有m个点有卫星通信功能.卫星通信 ...

  6. 在django项目中自定义manage命令(转)

    add by zhj 是我增加的注释 原文:http://www.cnblogs.com/holbrook/archive/2012/03/09/2387679.html 我们都用过Django的dj ...

  7. Mirror--如何对运行中的镜像端点更换证书

    如果使用证书配置镜像时,没有设置证书的时间,则默认证书有效期为一年,当证书快过期时,需要更换证书. 下面代码演示如何对正在运行的镜像更换证书 --=========================== ...

  8. vue学习之node.js

    Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.本文详细介绍了No ...

  9. [py]py常用模块小结

    - python md5校验: https://blog.csdn.net/linda1000/article/details/17581035 import hashlib hashlib.md5( ...

  10. [LeetCode] 225. Implement Stack using Queues_Easy tag: Design

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...