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. ThreadLocal的实现和使用场景

    ThreadLocal 内部实现.应用场景和内存泄漏 深入理解线程局部变量:ThreadLocal <Java源码分析>:ThreadLocal /ThreadLocalMap Threa ...

  2. PAT甲1038 Recover the smallest number

    1038 Recover the Smallest Number (30 分) Given a collection of number segments, you are supposed to r ...

  3. HDU 3746 - Cyclic Nacklace & HDU 1358 - Period - [KMP求最小循环节]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  4. shuffle

    <?php function genArr($len) { $arr = array(); $len = $len; for ($w=1; $w < $len ; $w++) { $arr ...

  5. Windows编程之connect函数研究

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  6. flask 日志

    https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%8 ...

  7. Java8 Collectors.toMap的坑

    按照常规思维,往一个map里put一个已经存在的key,会把原有的key对应的value值覆盖,然而通过一次线上问题,发现Java8中的Collectors.toMap反其道而行之,它默认给抛异常,抛 ...

  8. 洛谷P4436 游戏 [HNOI/AHOI2018]

    正解:拓扑排序 解题报告: 传送门! 首先不难想到可以把麻油锁的一段先直接缩成一个点,然后预处理每个点能到达的最左和最右节点,然后就能O(1)地查询辣 所以难点在于预处理 可以想到,对于它给定的关于锁 ...

  9. javascript 调用cookies

    cookie   用来保存信息,并且与服务器互动,因此前端后端都可以使用cookie     值得一提的是:虽然cookie是以文件的形式存储在客户端的电脑上, 但浏览器只会让创建cookie的网站访 ...

  10. 解决SQL Server管理器无法连接远程数据库的问题(转)

    add by zhj: 本文最后那个数据库别名没搞明白,在我的测试中没有建别名,是可以的.远程登陆时,服务器名称: 服务器IP,端口号 (如223.42.155.248,52134 如果是默认端口号1 ...