xml 模块

XML ———可扩展的标记语言

  也是一种通用的数据格式

  之所以用它 也是因为跨平台

 

XML 的语法格式:

  1,任何的起始标签都必须有一个结束标签。

     <> 起始标签

     </>结束标签

  2, 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。

这种语法是在大于符号之前紧跟一个斜线(/),XML解析器会将其翻译成<起始></结束>。

  3,标签必须按合适的顺序进行 行行嵌套,所以结束标签必须按镜像顺序匹配起始标签。

这好比 是将起始和结束标签看作是数学中的左右括号: 在没有关闭所有的内括号之前,是不能关闭外面的括号的。

  4,所有的特性都必须有值。

  5,所有的特性都必须在值的周围加上双引号。

 

一个标签的组成部分

 < 对象名 属性名称=“属性值” > 文本内容 < /对象名>

 

单标签的写法

  < 对象名 属性名称=“属性值” />

 

镜像关闭顺序实例:

<a>

  <b>

    <c>

    </c>

  </b>

</a>

 

XML 运用实例:

import xml.etree.ElementTree as ElementTree
# 解析d.xml
tree = ElementTree.parse("d.xml")
print(tree)
# 获取根标签
rootTree = tree.getroot()

 

假设把左右同学的信息写成XML:

<studentinfo>
    <张三>
        <age>20</age>
        <gender>man</gender>
    </张三>
    <李四>
        <age>20</age>
        <gender>man</gender>
    </李四>
</studentinfo>

 

三种获取标签的方式:

一,获取所有所有人的年龄 iter函数 是用于在全文范围获取标签

for item in rootTree.iter("age"):
    # 一个标签三个组成部分
    print(item.tag) # 标签名称
    print(item.attrib) # 标签的属性
    print(item.text) # 文本内容

 

二,从当前标签的子 标签中找到一个名为age的标签  如果有多个  找到的是第一个

print(rootTree.find("age").attrib)

 

三, 从当前标签的子标签中找到所有名称为age的标签

print(rootTree.findall("age"))

 

总结: 与json 相比

    同样的数据  json会比xml  效率更高

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

 

posted @ 2018-10-17 20:49  萤huo虫  阅读(143)  评论(0编辑  收藏  举报