xml

作者: ft207741 | 来源:发表于2018-08-28 14:40 被阅读0次

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, 会打印指定标签和指定标签后代标签;
  • myxml文件内容
<?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")  # 写入文件

相关文章

网友评论

      本文标题:xml

      本文链接:https://www.haomeiwen.com/subject/nfgfwftx.html