zoukankan      html  css  js  c++  java
  • python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*-
    #python 27
    #xiaodeng
    #python 之模块之 xml.dom.minidom解析xml
    #http://www.cnblogs.com/coser/archive/2012/01/10/2318298.html
    #python有三种方法解析XML,SAX,DOM,以及ElementTree
    
    
    
    
    #import xml.dom
    #这里主要通过xml.dom.minidom创建xml文档,然后解析用以熟悉api
    #常用方法function()
    '''
    minidom.parse(filename)                     #加载和读取xml文件
    doc.documentElement                         #获取xml文档对象
    node.getAttribute(AttributeName)            #获取xml节点属性值
    node.getElementsByTagName(TagName)          #获取xml节点对象集合
    node.childNodes                             #获取子节点列表
    node.childNodes[index].nodeValue        #获取xml节点值
    node.firstChild                             #访问第一个节点
    n.childNodes[0].data                        #获得文本值
    node.childNodes[index].nodeValue        #获取XML节点值
    
    
    doc=minidom.parse(filename)
    doc.toxml('utf-8')                          #返回Node节点的xml表示的文本
    '''
    
    
    
    #test.xml
    '''
    <collection shelf="New Arrivals">
    <movie title="Enemy Behind">
       <type>War, Thriller</type>
       <format>DVD</format>
       <year>2003</year>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Talk about a US-Japan war</description>
    </movie>
    <movie title="Transformers">
       <type>Anime, Science Fiction</type>
       <format>DVD</format>
       <year>1989</year>
       <rating>R</rating>
       <stars>8</stars>
       <description>A schientific fiction</description>
    </movie>
       <movie title="Trigun">
       <type>Anime, Action</type>
       <format>DVD</format>
       <episodes>4</episodes>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Vash the Stampede!</description>
    </movie>
    <movie title="Ishtar">
       <type>Comedy</type>
       <format>VHS</format>
       <rating>PG</rating>
       <stars>2</stars>
       <description>Viewable boredom</description>
    </movie>
    </collection>
    '''
    
    
    #解析案例
    from  xml.dom import  minidom
    doc=minidom.parse('test.xml')                   #parse("foo.xml")
                                                    #parseString("<foo><bar/></foo>")
    
    #实例化
    root=doc.documentElement                #注意没括号
    
    
    #文档对象元素
    print '--'*25
    print root.nodeName             #节点名字,collection
    print root.nodeValue            #节点的值,None
    print root.nodeType             #节点类型,1
    print root.ELEMENT_NODE         #1
    print '--'*25
    
    
    #在集合中获取所有电影
    nodes=root.getElementsByTagName('movie')        #获取xml节点对象集合
    
    
    #打印每部电影的详细信息
    for n in nodes:
        #print n#<DOM Element: movie at 0x1f9d968>
    
        
        #获得电影的title的属性值
        #print n.getAttribute('title')
    
    
        #获取xml节点type对象的具体信息
        type= n.getElementsByTagName('type')[0]
        print "Type:%s" % type.childNodes[0].data##获得文本值
  • 相关阅读:
    linux中解压.tgz, .tar.gz ,zip ,gz, .tar文件
    hook(v16.7测试)?
    React优点?
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    说说数据库连接池工作原理和实现方案?
    short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    Oracle的数据优化(经常被问到)?
    存储过程和函数的区别?
    Collection 和 Collections的区别?
    说说数据库连接池工作原理和实现方案?
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/5015999.html
Copyright © 2011-2022 走看看