• 常用模块——xml模块


    XML 可扩展标记语言

    格式:<></>

    也是一种通用的数据格式

    之所以用它是因为块平台性。

    语法格式

    一、任何的起始标签都必须有⼀一个结束标签。
    <> </>
    二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标
    签。这种语法是在⼤于符号之前紧跟一个斜线(/),XML
    解析器会将其翻译成<百度百科词条></百度百科词条>。
    例例如<百度百科词条/>。

    三、标签必须按合适的顺序进⾏行行嵌套,所以结束标签必须按镜像顺序匹配
    起始标签。这好⽐比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有
    的内部括号之前,是不不能关闭外⾯面的括号的。
    四、所有的特性都必须有值。
    五、所有的特性都必须在值的周围加上双引号。

    一个标签的组成部分:
    <tagename 属性名="属性值">文本内容</tagename>
    单标签的写法
    <tagename 属性名 = "属性值"/>
    镜像关闭顺序实例
    <a>
        <b>
            <c>
            </c>
        </b>
    </a>
    信息写成xml
    <studentinfo>
        <张三>
            <age>20</age>
            <gender>man</gender>
        </张三>
        <李四>
            <age>20</age>
            <gender>man</gender>
        </李四>
    </studentinfo>

    总结
    xml也是一种中间格式,也是属于序列化方式之一。
    与json相比较
    同样数据 json会比xml更小,效率更高

    xml需要根据文档结构手动解析,而json直接转对象。

    d.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <studentinfo>
         <stu age="20" name="张三">
             <girlfriend age="19" name="张三的女朋友" />
        </stu>
        <stu age="20" name="李四">
             <girlfriend age="19" name="李四的女朋友" />
        </stu>
    </studentinfo>

    解析xml

    import xml.etree.ElementTree as ElementTree
    #解析d,xml
    tree = ElementTree.parse('d.xml')
    print(tree)#<xml.etree.ElementTree.ElementTree object at 0x0000000002429BA8>
    rootTree=tree.getroot()#获得根标签
    print(rootTree)#<Element 'studentinfo' at 0x00000000023DBA48>

    获得根标签下子标签三种方式:

    iter("tagname")

    # 种获取标签的方式
    # 获取所有人的年龄 iter是用于在全文范围获取标签
    for item in rootTree.iter("age"):
        print(item.tag)
        print(item.attrib)
        print(item.text)

     结果

    age
    {'name': '1'}


    age
    {'name': '2'}

     find()只是找到第一个标签

    print(rootTree.find('age').attrib)
    #{'name': '1'}

    findall()找到所有符合标签名

    print(rootTree.findall('age').__iter__().__next__().attrib)
    #{'name': '1'}

    获得单个属性

    stu = rootTree.find("stu")
    print(stu.get("age"))
    print(stu.get("name"))

    删除子标签

    rootTree.remove(stu)

    创建新的标签

    new = ElementTree.Element('new_tag',{'属性名':111})
    rootTree.append(new)
    tree.write('f.xml',encoding='utf-8')#写入文件
  • 相关阅读:
    C++11——Lambda表达式
    匿名空间使用
    C++11——可调用对象包装器、绑定器
    winhttp 发送https的get请求
    C++11——基于范围的for循环
    C++11——列表初始化
    C++11——委托构造和继承构造函数
    C++11——using的使用
    使用appnium,Uiautomatorviewer连接手机报错:Unexpected error while obtaining UI hierarchy java.lang.reflect.Invocation【已解决】
    逆向 | IATHook 全屏加速挂
  • 原文地址:https://www.cnblogs.com/msj513/p/9806364.html
Copyright © 2020-2023  润新知