zoukankan      html  css  js  c++  java
  • 解析简单xml文档

    一、解析简单的xml文档

    使用xml.etree.ElementTree 下的parse()

    xmlName.xml的文档的内容如下:

    <?xml version="1.0"?>
    <data>
        <country name="zhongguo">
            <rank updated="yes">2</rank>
            <year >2017</year>
            <gdppc>14110</gdppc>
            <neighbor name="riben" direction="e"/>
            <neighbor name="hanguo" direction="w"/>
        </country>
         <country name="chaoxian">
            <rank updated="yes">3</rank>
            <year >2016</year>
            <gdppc>59900</gdppc>
            <neighbor name="zhongguo" direction="w"/>
            <neighbor name="hanguo" direction="e"/>
        </country>
         <country name="meiguo">
            <rank updated="yes">5</rank>
            <year >2009</year>
            <gdppc>13600</gdppc>
            <neighbor name="yingguo" direction="n"/>
            <neighbor name="deguo" direction="s"/>
        </country>
    </data>

    以下代码是对xmlName.xml文档的解析

    from xml.etree.ElementTree import parse
    
    with open('xmlName.xml') as f:
        et = parse(f)
        root = et.getroot()
        print root
        print root.tag
        print root.attrib
        print root.text
        print root.text.strip()
        # child = root.getchildren() 将被去掉
        for child in root:
            print child.get('name')
    
        '''下面的三个用只能找到根元素的直接子元素'''
        root.find('country')
        root.findall('country')
        root.iterfind('country')
    
        '''可以找到任意元素'''
        print list(root.iter())
        print list(root.iter('rank'))
    
        '''findall()的高级用法'''
        root.findall('country/*') #coutry元素下的所有子元素,/*
        root.findall('.//rank') #所有rank元素,.//
        root.findall('.//rank/..') #所有rank元素的父元素, /..
    
        root.findall('country[@name]') #有name属性的coutry元素,@attrib
        root.findall('country[@name="chaoxian"]') #name属性等于"chaoxian"的coutry元素,@attrib="value"
    
        root.findall('country[rank]') #子元素有rank元素的country元素,tag
        root.findall('country[rank="1"]') #子元素有rank="1"的country元素,tag=text
    
        root.findall('country[1]') #索引为1的country元素,根据位置查找
        root.findall('country[last()]') #最后一个country元素
        root.findall('country[last()-1]') #倒数第二个country元素
  • 相关阅读:
    《Mysql
    《算法
    《Redis
    《Mysql
    《Mysql
    SSH免密码登录
    TCP/IP四层模型和OSI七层模型的概念
    简单描述RAID级别:
    awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
    awk 的逻辑运算字符
  • 原文地址:https://www.cnblogs.com/misslin/p/6693223.html
Copyright © 2011-2022 走看看