zoukankan      html  css  js  c++  java
  • XML模块

    一. XML 模块

      是一种定义电子文档结构和描述的语言,可以标记数据,定义数据类型

      标记翻译为标签,标签是指某种特殊符号,XML是用标签来定义文档结构

      标签的组成:<person name='egon'> hello my friend</person>

        1. 标签名: person

        2. 属性(attribute): name='egon'

        3. 文本(text):hello my friend

      空标签:  <person></person>   或  <person/>

      标签格式要求:

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

        2.标签必须按顺序嵌套,结束标签必须按镜像顺序匹配起始标签

        3.所有属性都必须有值

        4.属性的值必须加双引号

        5. 最外层为根标签,只能有一个根标签

      解析 xml:

    <?xml version="1.0"?>
    <data>
        <country name="Liechtenstein">
            <rank updated="yes">2</rank>
            <year>2008</year>     
        </country>
        <country name="Singapore">
            <rank updated="yes">5</rank>
            <year>2011</year>
            <neighbor name="Malaysia" direction="N"/>
    
    </data>

    import xml.etree.ElementTree as ET
    # 先用.parser 解析文档,类似读取文档
    tree=ET.parser('xmltest.xml')
    root=tree.getroot() # 获得根标签
    # 遍历xml文档
    for child in root:
      for son in child:
        print(son.tag) # rank
        print(son.attrib) #字典{'updated': 'yes'}
        print(son.text) #2
    # 只遍历year节点
    for node in root.iter():
      print(node) # 打印全部标签,全文搜索
    for node in root.iter('year'): # 将全文的'year'搜索出来
      print(node.tag)
      print(node.text)
    --------------------------------------------------------------------
    import xml.etree.ElementTree as ET
    tree=ET.parser('file.xml')
    root=tree.getroot()

       总结:

        查找标签函数: iter('标签名‘)    # 全文查找

                find('标签名’)   #查找子节点匹配的第一个

                findall('标签名‘)# 查找子节点匹配的所有

        访问标签的内容

                element.tag   获取标签名

                element.attrib  获取属性

                element.text  获取文本

        修改文档内容:

                element.tag='标签名‘

                element.attrib='文本’

                element.set('属性名‘,’属性值‘)

        删除节点:

              root.remove('标签对象’)

        添加子标签:

              year2=ET.Element('year2')   # 指定名称

              year2.text='新年'

              year2.attrib={'update':'yes'}

              country.append(year2)  在country节点下添加子节点

        写入文件:

              tree.write('文件名‘)

    # 代码生成XML文档

    import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"}) age = ET.SubElement(name, "age", attrib={"checked": "no"}) sex = ET.SubElement(name, "sex") sex.text = 'man' name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"}) age = ET.SubElement(name2, "age") age.text = '19' et = ET.ElementTree(new_xml) # 生成文档对象 et.write("test.xml", encoding="utf-8", xml_declaration=True) ET.dump(new_xml) # 打印生成的格式

    与JSON 对比:

      json是一种数据格式,使用场景多维前后台交互

      xml 支持的数据类型理论上不收显示,完全可以自定义标签的结构和含义。在一些语言中经常作为配置文件来使用

  • 相关阅读:
    《如何评价Kaiming He的Momentum Contrast for Unsupervised?》
    多伦多大学&NVIDIA最新成果:图像标注速度提升10倍!
    GitHub超全机器学习工程师成长路线图,开源两日收获3700+Star!
    上Github,北大、清华、浙大、中科大4大名校课程在线学,加星总数超1.8万
    使用Python+OpenCV进行图像处理(二)| 视觉入门
    重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!
    巴黎不哭!十亿数据精准扫描,帮卡西莫多重新找回他的玫瑰花窗
    机器学习算法系列:FM分解机
    百道Python面试题实现,搞定Python编程就靠它
    学习GAN必须阅读的10篇论文
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10101662.html
Copyright © 2011-2022 走看看