• xml模块介绍


     
    # xml  是一门可拓展的语言
    # xml 语法 是用<>包裹的起来的<>就是标签,  xml可以由多个<>组成  也可以由单个<>组成,
    # <tag></tag>  双标签
    # <tag/> 单标签  没有文本 一般用于设计文档结构 例如换行等
    # <tr/> 表示换行
    # xml的组成部分 1)标签名称  2)文本信息 test  3)标签属性
    

    案例

    '''
    例如
    <tag style="color:red" age="18">12345</tag>
    一个标签的完整组成 有三个部分
    tag 是标签名称
    12345 是文本内容 text
    style="color:red" age="18" 是标签的属性
    
    其他的规范
    1.又开始就必须有结束
    2.所有属性值必须包含在双引号里面
    3.只能有一个根标签 (最外层只能有一个标签)
    4.开始标签和结束标签的顺序是相反的  最先打开谁 就最后关闭谁  最后打开的最先关闭
    '''
    
    

    xml模块的运用

    #   可以理解为解析树的过程 树-根标签-子标签
    # 1:首先导入xml文本 ==相当于得到一个树
    '''
    import xml.etree.ElementTree as ET
    tree =ET.parse('test1.xml')    # 相当于得到一个树  就是得到xml文档
    # 2 获取跟标签
    root = tree.getroot() # 获取跟标签
    '''
    # 3 获取跟下面的标签
    # 获取所有子标签root.iter()     获取所有某某子标签root.item('参数')
    # 获取单标签 root.find('参数')
    # 获取多标签root.fandall(参数)
    
    # 遍历所有root跟的标签
    # for tag in root:
    #     print(tag)
    
    # 遍历test1.xml文档下的所有标签
    # for tag in root.iter():  # iter 可迭代的一种对象
    #     print(tag)
    
    # 从root下查找第一个名字为country的子标签
    # country = root.find('country')
    # print(country)  # <Element 'country' at 0x000001FC622A9638>
    
    # 从root下查找所有名字为country的子标签
    # countrys = root.findall('country')
    # print(countrys)
    
    # 从root下查找所有名字为country的子孙标签
    '''
    for tag in root.iter('country'):
        print(tag)
    '''
    """
    
    

    查找标签的4种方式test1.xml

    1.
    iter()
    如果没有参数则查找所有标签
    如果有参数则查找所有名字匹配的标签
    查找范围
    为全文
    
    2.
    find()
    必须给参数
    查找当前标签的子标签
    返回第一个名字匹配的
    
    3.
    findall()
    必须给参数
    查找当前标签的子标签
    返回所有名字匹配的
    
    4.
    直接遍历某个标签
    返回的是这个标签的所有子标签
    """
    

      

    与json的区别

    '''
    
        xml 是一种可扩展的标记语言
        可以高度自定义文档的结构 数据类型 标签的含义等等
        所以扩展性远比JSON要强
    
        json更加适用于 前后台数据交换  优点 轻量级  跨平台 语法简洁
        xml更多用来作为配置文件 当然 python不太常用
        html就是一种xml
    '''
    
    # 获取某个标签的内容 (则是找到标签名称 标签属性 和文本信息)
    '''
    import xml.etree.ElementTree as ET
    tree =ET.parse('test1.xml')
    root = tree.getroot()
    ob = root.findall('country')
    # 找到标签名称
    for i in ob:
        print(i.tag) # 标签名称
        print(i.attrib) # 标签的所有属性 返回一个字典
        print(i.text)  # 标签的文本内容
    '''
    
    
    
    
    
    import xml.etree.ElementTree as ET
    from xml.etree.ElementTree import Element
    # tree = ET.parse("test.xml")
    # root = tree.getroot()
    # # 修改文本
    # root.text = "这是跟标签的文本"
    # # 修改属性 没有则添加 有则覆盖
    # root.set("name","jack")
    # # 修改标签名字
    # root.tag = "data"
    #
    # tree.write("test2.xml",encoding="utf-8",xml_declaration=True)
    
    # 把test1.xml 中所有year标签的text加1
    # tree = ET.parse("test1.xml")
    # root = tree.getroot()
    # for e in root.iter("year"):
    #     e.text = str(int(e.text) + 1)
    #
    #
    # tree.write("test1.xml")
    
    
    #
    # 把test1.xml 中所有gdppc删除
    # remove 函数 需要一个标签作为参数 即要被删除的标签   然后只能有父标签来删除子标签
    # tree = ET.parse("test1.xml")
    # root = tree.getroot()
    #
    # for c in root.iter("country"):
    #     gdppc = c.find("gdppc")
    #     if gdppc != None:
    #         c.remove(gdppc)
    #
    # tree.write("test4.xml")
    
    
    # 添加标签
    
    tree = ET.parse("test1.xml")
    root = tree.getroot() # type:Element
    # 创建需要被添加的子标签
    new_tag = Element("ThisIsNewTag")
    new_tag.text = "123" # 设置文本
    root.append(new_tag) # 添加到root下
    tree.write("test5.xml") # 写入文件
    

      

  • 相关阅读:
    微信扫码签到系统asp源码2.0示例
    asp代码写的,微信会员报名转发分享带上下级和邀约人关系并且能微信支付asp编号的
    asp微信支付代码v4.1无需证书版,带回调入库的asp支付源码
    asp微信支付源码完整版下载,带证书文件post_url.aspx和post_url.aspx.cs源码下载
    asp群发微信公众号模板消息代码
    asp生成带参数的二维码并合成推广海报图片,asp合并合成推广海报图片asp代码
    asp微信公众号支付回调参数入库demo详细示例
    asp实现微信jssdk分享,静态页html实现jssdk微信分享
    asp微信支付企业付款功能代码下载
    asp实现微信客服消息群发,asp代码写的
  • 原文地址:https://www.cnblogs.com/wakee/p/10872647.html
Copyright © 2020-2023  润新知