xml模块

引入xml模块

import xml.etree.cElementTree as ET

获取根节点

# data.xml

    
    
    

# xml.py
import xml.etree.cElementTree as ET
tree = ET.parse('data.xml')
root =  tree.getroot()
print(root.tag) 
# data

获取节点标签名、属性、文本值

tag 标签名
attrib 属性名
text 文本值
# data.xml

    
        日本人
        GDP
    
    
        美国人
        好莱坞
    
    

# xml.py
import xml.etree.cElementTree as ET

tree = ET.parse('data.xml') # 拿到文本内容
root = tree.getroot() # 拿到根节点
for child in root:
    for i in child:
        print(i.text, i.attrib)
# 日本人
# {'id': '9001'}
# GDP
# {'value': '10'}
# 美国人
# {'id': '1001', 'money': 'much'}
# 好莱坞
# {}

iter遍历根节点下的某个标签

# xml

    
        日本人
        GDP
    
    
        美国人
        好莱坞
    
    

# py
import xml.etree.cElementTree as ET

tree = ET.parse('t.xml') # 拿到文本内容
root = tree.getroot() # 拿到根节点
for node in root.iter('people'):
    print(node.tag, node.text)
# people 日本人
# people 美国人

文本、属性修改

import xml.etree.cElementTree as ET

tree = ET.parse('t.xml')
root = tree.getroot()

for people in root.iter('people'):
    # 修改节点文本
    people.text = people.text + '不是人'
    # set修改文本属性
    people.set('cute', 'no')
# 重写xml
tree.write('t.xml')

删除findall、find、remove

# xml

    
        日本人
        20
    
    
        美国人
        10
    

# py
import xml.etree.cElementTree as ET

tree = ET.parse('t.xml')
root = tree.getroot()

for country in root.findall('country'):
    if int(country.find('gdp').text) < 15:
        root.remove(country)
tree.write('t.xml')

用代码生成xml

import xml.etree.cElementTree as ET

# 生成根节点
tree = ET.Element('data')

stu = ET.SubElement(tree, 'students', attrib={'age': '19', 'class': '6'})
stu.text = '张小明'
stu1 = ET.SubElement(tree, 'students', attrib={'age': '18', 'class': '7'})
dog = ET.SubElement(stu1, 'dog', attrib={'color': 'yellow'})

et = ET.ElementTree(tree)

et.write('test.xml', encoding='utf-8')
# 生成的xml

    张小明
    
        
    

你可能感兴趣的:(python)