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

  • 相关阅读:
    NVelocity模板引擎用法之模板中直接调用类的方法
    GridView的编辑,更新,取消,删除等功能演示
    页面加载后检查用户登录状态,通过ajax实现
    通过ajax方式实现用户名存在性检查
    各个大神大公司的UED
    ASP.NET中的DataView用法详解
    周期三角脉冲信号的生成_Matlab实现
    课后题:冲激函数习题讨论
    [KeilC51] 有关出栈时sp原子性的疑虑
    [KeilC51]软件简单PWM波生成
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10101662.html
Copyright © 2011-2022 走看看