• 初识python: xml 操作


    导入模块:

    import xml.etree.ElementTree as ET

    创建xml文件:

    new_xml = ET.Element("namelist")  # 创建根节点
    
    userinfo = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "yes"})  # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
    name = ET.SubElement(userinfo, "name")  # 给userinfo创建子节点,name:节点名
    name.text = 'name1'
    age = ET.SubElement(userinfo, "age", attrib={"checked": "no"})  # 给userinfo创建子节点,age:节点名,attrib:属性及值
    age.text = '23'   # 给age节点添加节点内容
    sex = ET.SubElement(userinfo, "sex")  # 给userinfo创建子节点,sex:节点名
    sex.text = ''
    
    userinfo2 = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "no"})  # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
    name = ET.SubElement(userinfo2, "name")  # 给userinfo2创建子节点,name:节点名
    name.text = 'name2'
    age = ET.SubElement(userinfo2, "age")  # 给userinfo2创建子节点,age:节点名
    age.text = '24' # 给age节点添加节点内容
    sex = ET.SubElement(userinfo2, "sex")  # 给userinfo创建子节点,sex:节点名
    sex.text = ''
    
    userinfo3 = ET.SubElement(new_xml, "userinfo", attrib={"enrolled": "yes"})  # 给new_xml创建子节点,userinfo:节点名,attrib:属性及值
    name = ET.SubElement(userinfo3, "name")  # 给userinfo3创建子节点,name:节点名
    name.text = 'name3'
    age = ET.SubElement(userinfo3, "age")  # 给userinfo3创建子节点,age:节点名
    age.text = '26' # 给age节点添加节点内容
    
    et = ET.ElementTree(new_xml)  # 生成文档对象
    et.write("xmltest.xml", encoding="utf-8", xml_declaration=True)  # 写入xmltest.xml文件,xml_declaration指定为xml格式,文件头:<?xml version='1.0' encoding='utf-8'?>
    
    ET.dump(new_xml)  # 打印生成的格式

    执行结果:

    读取xml文件:

    tree = ET.parse('xmltest.xml')  # 打开xml文件
    root = tree.getroot()  # 获取根节点
    # root.tag 获取根节点标签
    print(root.tag)  # 获取根节点标签  # namelist
    
    # 遍历xml文档
    # text 获取标签内容
    # attrib 获取标签属性值
    for child in root:
        print(child.tag, child.attrib)  # 获取标签名及属性值
        for i in child:
            print(i.tag, i.text)  # 获取标签名及标签内容
    
    # 遍历指定节点(name)
    for node in root.iter('name'):
        print(node.tag, node.text)

    执行结果:

    修改xml内容:

    tree = ET.parse("xmltest.xml")  # 打开xml文件
    root = tree.getroot()  # 获取根节点
    
    # 修改,所有age值加1
    for node in root.iter('age'):
        new_rank = int(node.text) + 1
        node.text = str(new_rank)  # 修改age节点的内容
        node.set("sexvalue", "M/W")  # 给sex节点添加属性
    
    tree.write("xmltest.xml")

    执行结果:

    删除xml节点:

    tree = ET.parse('xmltest.xml')  # 打开xml文件
    root = tree.getroot()  # 获取根节点
    # root.tag 获取根节点标签
    
    for userinfo in root.findall('userinfo'):  # root.findall 找到所有的 userinfo 节点
        rank = int(userinfo.find('age').text)  # 获取age的值
        if rank > 25:
            root.remove(userinfo)  # 删除age>25的userinfo节点
    
    tree.write('output.xml')  # 删除之后的内容写入output.xml中,也可写入源文件 tree.write('xmltest.xml')

    执行结果:

  • 相关阅读:
    SQL中文转拼音
    cocos2D 虚拟摇杆Joystick功能实现
    cocos2d 粒子效果以及Particle Designer粒子工具的学习
    android 模拟器出错,emulator: ERROR: unknown virtual device name
    [转][越狱破解] 苹果itouch 4 iOS5.0.1完美越狱教程+资源下载
    objectivec 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
    [转]cocos2dx添加广告条(IOS and Android)
    cocos2d1.0.1x0.10.0版本 设置横屏与竖屏的方法
    【转】总结阐述Cocos2dX与Cocos2diphone区别;
    Objectivec 中CGGeometry几何类常用方法简单整理
  • 原文地址:https://www.cnblogs.com/simple-li/p/11396546.html
Copyright © 2020-2023  润新知