XML模块

    什么XML:全称 可扩展标记语言
        标记指的是代表某种含义的字符 XML<>
    为什么需要XML
        为能够在不同的平台间继续数据的交换
        为了使交换的数据能让对方看懂 就需要按照一定的语法规范来书写
    XML语法格式:
        一、任何的起始标签都必须有一个结束标签。
            <tagname></tagname>
            <tagname></tagname>
            <tagname/>  简化写法

        二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<百度百科词条/>。XML解析器会将其翻译成<百度百科词条></百度百科词条>。
        三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如这是一串百度百科中的样例字符串。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
            <tag1>
                <tag2>
                    <tag3>
                    </tag3>
                </tag2>
            </tag1>    大白话  关闭标签应该从内往外 一层一层关闭 顺序不能乱
        四、所有的特性都必须有值。
            特性指的是属性
            <person name="">
            </person>
        五、所有的特性都必须在值的周围加上双引号。

        注意:最外层有且只有一个标签 这个标签称之为根标签
             第一行应该有文档声明 用于高速计算机怎么理解
              例如:<?xml version="1.0" encoding="utf-8"?>
              当标签嵌套的时候会出现层级关系  如果一个标签不被任何别的标签包裹 那他就是根标签(最外层)
        使用场景:
            1.配置文件
            2.常规的数据交换  例如从服务器获取一段新闻

        与json的区别:
            作用是一样的 都是一种数据格式
            xml比json先诞生
            json的数据比xml小
            目前json是主流

        python中的xml处理
            使用到的模块
            ElmentTree 表示整个文件的元素树

            Elment 表示一个节点
                属性
                1.text      开始标签和结束标签中间的文本
                2.attrib    所有的属性     字典类型
                3.tag       标签的名字
                方法
                    get 获取某个属性的值
            1.解析XML
                查找标签
                find      在子标签中获取名字匹配第一个
                findall   在子标签中获取名字匹配的所有标签
                iter(tagname)      在全文中查找[匹配的所有标签 返回一个迭代器
            2.生成XML
                用ElmentTree
                parse()  解析一个文件
                getroot() 获取根标签
                write()  写入到文件
            3.修改xml
                set 一个属性
                remove 一个标签
                append 一个标签

语法格式练习: 要求把你的同桌的手机信息用xml来描述
"""
import xml.etree.ElementTree as et

 读取xml文档到内存中  得到一个包含所有数据的节点树
 每一个标签就称之为一个节点 或 元素
 tree = et.parse("text.xml")
 获取根标签
 root = tree.getroot()
  获取所有的country   找的是第一个
 print(root.find("country"))
找的是所有
print(root.findall("country"))

 获取year
print(root.iter("country"))
for i in root.iter("country"):
    print(i)


 遍历整个xml
for country in root:
    print(country.tag,country.attrib,country.text)
    for t in country:
        print(t.tag, t.attrib, t.text)



print(root.find("country").get("name"))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值