20180209-xml模块

xml的用法操作如下:

  xml格式如下:

<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2008</year>
        <gdppc>141100</gdppc>
        <neighbor name="Austria" direction="E"/>
        <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2011</year>
        <gdppc>59900</gdppc>
        <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2011</year>
        <gdppc>13600</gdppc>
        <neighbor name="Costa Rica" direction="W"/>
        <neighbor name="Colombia" direction="E"/>
    </country>
</data>

 

  xml协议在各个语言中都是支持的,在python中可以使用如下模块操作xml

import xml.etree.ElementTree as ET  
                                    
tree = ET.parse('xmltest.xml')      
root = tree.getroot()               
print(root.tag)                     
# 输出                                
# data                              
                                    
# 遍历xml文档                           
for child in root:                  
    print(child.tag,child.attrib)   
# 输出                                
# country {'name': 'Liechtenstein'} 
# country {'name': 'Singapore'}     
# country {'name': 'Panama'}        
                                    
for node in root:                   
    for child in node:              
        print(child.tag,child.text) 
# 输出                                
# rank 2                            
# year 2008                         
# gdppc 141100                      
# neighbor None                     
# neighbor None                     
                                    
# rank 5                            
# year 2011                         
# gdppc 59900                       
# neighbor None                     
                                    
# rank 69                           
# year 2011                         
# gdppc 13600                       
# neighbor None                     
# neighbor None                     
                                    
                                    
# 只遍历year节点                         
for node in root.iter('year'):      
    print(node.tag,node.text)       
                                    
# 输出                                
# year 2008                         
# year 2011                         
# year 2011                         

  修改和删除xml文档

# 修改                             
for node in root.iter('year'):   
    new_year = int(node.text) + 1
    node.text = str(new_year)    
    node.set('update','yes')     
tree.write('xmltest.xml')        
                                 
# 只遍历year节点                      
for node in root.iter('year'):   
    print(node.tag,node.text)                              
# 输出                             
# year 2009                     
# year 2012                      
# year 2012

# 删除node
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country)

tree.write('output.xml')

  自己创建xml文档

import xml.etree.ElementTree as ET                            
                                                              
new_xml = ET.Element('namelist')                              
name = ET.SubElement(new_xml,'name',attrib={'enrolld': 'yes'})
age = ET.SubElement(name,'age',attrib={'checed': 'no'})       
sex = ET.SubElement(name,'sex')                               
sex.text = ''                                                
                                                              
name2 = ET.SubElement(new_xml,'name',attrib={'enrolld': 'no'})
age = ET.SubElement(name2,'age')                              
age.text = '19'                                               
                                                              
et = ET.ElementTree(new_xml) #生成文档对象                          
et.write('test.xml',encoding='utf-8',xml_declaration=True)    
                                                              
ET.dump(new_xml) #打印生成格式                                      

 

posted @ 2018-02-09 17:23  土耳其大骗子  阅读(139)  评论(0编辑  收藏  举报