Menu
- xml定义
- 创建xml文件
- xml基本操作(遍历,打印tag、属性和text)
- 修改Element内容
- 删除xml的tag
xml定义
- xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。
创建xml文件
import xml.etree.ElementTree as ET
root_tag = ET.Element("animals") # roottag
fly = ET.SubElement(root_tag, "fly", attrib={"type": "fly animals"}) # subtag
bee = ET.SubElement(fly, "bee")
bee.text = "I am bee, i can fly!" # text
owl = ET.SubElement(fly, "owl")
owl.text = "I am owl, i can fly!"
run = ET.SubElement(root_tag, "run", attrib={"type": "run animals"})
tiger = ET.SubElement(run, "tiger")
tiger.text = "I am tiger, i can run!"
elephant = ET.SubElement(run, "elephant")
elephant.text = "I am elephant, i can run!"
# 写入文件
et = ET.ElementTree(root_tag) #生成ElementTree对象
# 写入到文件,内容编码(不指明默认为ascii, 添加xml声明:<?xml version='1.0' encoding='utf-8'?>)
et.write("myxml.xml", encoding="utf-8", xml_declaration=True)
ET.dump(fly) # 打印指定element, 会打印指定标签和指定标签后代标签;
<?xml version='1.0' encoding='utf-8'?>
<animals>
<fly type="fly animals">
<bee bee_type="bumblebee">I am bee, i can fly!
<footnumber>6</footnumber>
</bee>
<owl>I am owl, i can fly!
<footnumber>2</footnumber>
</owl>
</fly>
<run type="run animals">
<tiger>I am tiger, i can run!
<footnumber>4</footnumber>
</tiger>
<elephant>I am elephant, i can run!
<footnumber>4</footnumber>
</elephant>
</run>
</animals>
xml基本操作(遍历,打印tag、属性和text)
"遍历孙子标签, 并打印tag、attribute和text"
xmlFileObj = ET.parse("myxml.xml") # 生成文件对象 并 解析
root = xmlFileObj.getroot() # 从文件对象得到root对象
for onelevel in root:
for twolevel in onelevel:
print(twolevel.tag, twolevel.attrib, twolevel.text)
"""
bee {'bee_type': 'bumblebee'} I am bee, i can fly!
owl {} I am owl, i can fly!
tiger {} I am tiger, i can run!
elephant {} I am elephant, i can run!
"""
修改tag的text
# 修改Element内容
"修改 footnumber属性, 并重新写到文件"
for i in root.iter("footnumber"): # 遍历root下面的标签并找到指定标签,如不填参数则返回所有标签;
newfoot = int(i.text) + 1
i.text = str(newfoot) # 重新赋值
i.set("updated", "yes") # add attribute
print(i.tag, i.text)
# "如果修改结果重新写到文件需要加↓代码 "
# xmlFileObj.write("myxml.xml")
'''
result:
footnumber 7
footnumber 3
footnumber 5
footnumber 5
'''
删除xml的tag
"animals -> fly -> bee -> footnumber"
"只能用上级tag对象来删除下一级的tag对象 如:beeObj.remove(footnumberObj)"
import xml.etree.ElementTree as ET
xmlFileObj = ET.parse("bb.xml") # 生成文件对象 并 解析
root = xmlFileObj.getroot() # 从文件对象得到root对象
for obj in root.iter("bee"):
footNoObj = obj.find("footnumber")
obj.remove(footNoObj) # 删除bee下的footnumber
xmlFileObj.write("bb.xml") # 写入文件
网友评论