zoukankan      html  css  js  c++  java
  • 初识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')

    执行结果:

  • 相关阅读:
    [洛谷P1507]NASA的食物计划 以及 对背包问题的整理
    [洛谷P3811]【模板】乘法逆元
    56级信息奥赛12学子汇总
    [洛谷U63006]导函数最小系数
    [洛谷U62364]三次函数极值
    [洛谷U62358]求导函数
    Nagios 请检查HTTP服务器关于该CGI的访问权限设置
    安装Cacti-plugin
    解压安装Cacti在apache中的补充
    64位操作系统下IIS报“试图加载格式不正确的程序”错误
  • 原文地址:https://www.cnblogs.com/simple-li/p/11396546.html
Copyright © 2011-2022 走看看