• python模块之xml


    xml模块

    1. xml结构

    xml是种实现不同语言或程序之间进行数据交换的协议,跟json差不多,但没json使用简单。但是因为历史遗留问题,至今很多行业依然使用xml这种数据格式。

    xml的格式如下,是通过<>节点来区别数据结构的。

    <?xml version="1.0" encoding="utf-8"?>
    <friendsinfo>
         <frd age="22" name="任盼晨">
             <info qq="1114893928" wechat="Dmgwood" />
        </frd>
    
        <frd age="22" name="袁靖">
             <info qq="2410152779" wechat="wxid_2vykc0sjoiie21" />
        </frd>
    
        <frd age="22" name="卫一帆">
             <info qq="97280940" wechat="oOC" />
        </frd>
    
        <frd age="22" name="胡文涛">
             <info qq="2522864970" wechat="hu2522864970" />
        </frd>
    
    </friendsinfo>
    
    1. 语法结构
    • 任何的起始标签都必须有一个结束标签。 <> </>
    • 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于号之前紧跟一个斜杠(/),例如,解析器会将其翻译成
    • 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签。这好比将起始和结束标签看作是数学中的左右罗浩:在没有关闭所有的内部括号之前,是不能关闭外面括号的。
    • 所有的特性都必须有值。
    • 所有的特性都必须在值得周围加上双引号。
    • 一个标签的组成部分包括:标签名、属性名以及属性值、还有文本内容(可以没有)

    双标签的写法:

    <tagename '属性名称'="属性值">文本内容</tagname>
    

    单标签的写法:

    <tagename 属性名称="属性值"/>
    

    总结:xml也是一种中间格式,也属于序列化方式之一,与json比较,同样的数据json会更小,效率更高;xml需要根据文档结构手动解析,而json直接可以转为python数据对象。

    1. xml模块用法
    # 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>
    
    
        <age num="1">
            <age num="2">
                <age num="3">
    
                </age>
            </age>
        </age>
    
        <age>
    
        </age>
    </studentinfo>
    
    import xml.etree.ElementTree as ElementTree
    tree = ElementTree.parse('d.xml')
    rootTree = tree.getroot()
    # 三种获取标签的方式
    # 1. 获取所有人的年龄,iter用于在全文范围获取标签
    for item in rootTree.iter('age'):
        # 一个标签三个组成部分
        print(item.tag) # 标签名称
        print(item.attrib) # 标签的属性
        print(item.text) # 文本内容
    # 2. 从当前标签的子标签中找到一个名称为age的标签,如果有多个,找到的是第一个
    print(rootTree.find('age').attrib)
    # 3. 从当前标签的子标签中找到所有名称为age的标签
    print(rootTree.findall('age'))
    # 获取单个属性
    stu = rootTree.find('stu')
    print(stu.get("age"))
    print(stu.get("name"))
    # 删除子标签
    rootTree.remove(stu)
    # 添加子标签
    newTag = ElementTree.Element('这是新标签', {'一个属性': '值'})
    rootTree.append(newTag)
    
    # 写入文件
    tree.write('f.xml', encoding='utf-8')
    
  • 相关阅读:
    有一种努力叫“凌晨四点”
    编程思想
    小记
    团队精神与集体主义
    变量起名
    软件项目估量方法
    戏说QQ
    压力说
    AngularJS指令基础(一)
    Leetcode 1021. Best Sightseeing Pair
  • 原文地址:https://www.cnblogs.com/zuanzuan/p/9813215.html
Copyright © 2020-2023  润新知