• Python xml文件处理


    什么是XML文件?

    xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

    从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,具体如下:

    • XML 被设计用来传输和存储数据
    • HTML 被设计用来显示数据

    创建xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Class>
        <student>
            <name>Nancy</name>
            <age>23</age>
            <city>Chengdu</city>
        </student>
        
        <student>
            <name>Anne</name>
            <age>24</age>
            <city>Chongqing</city>
        </student>
        
        <student>
            <name>Hugh</name>
            <age>25</age>
            <city>Beijing</city>
        </student>
        
        <teacher>
            <name>Bob</name>
            <age>27</age>
            <city>Shanghai</city>
        </teacher>
        
        <account>
        <login username="student" password="123456"/>
        <login username="teacher" password="888888"/>
        </account>
    </Class>

    XML节点

    xml文件节点一般包含3类:

    1. 元素节点
    2. 文本节点
    3. 属性节点

    每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

    • nodeName(节点名称)
    • nodeValue(节点值)
    • nodeType(节点类型)

    读取元素节点

    案例:查看Class_info.xml文件里Class节点的属性(结点名称,节点的值、节点类型)

    from xml.dom import minidom
    #加载xml文件
    dom=minidom.parse('Class_info.xml')
    #加载dom对象元素
    root=dom.documentElement
    #打印节点信息
    print(root.nodeName)    #获取节点名称
    print(root.nodeValue)   #获取节点值
    print(root.nodeType)    #获取节点类型,元素节点返回1,属性节点返回2

    运行结果:

    Class
    None
    1


    读取文本节点的值

    案例:分别打印出Class_info.xml里的学生和老师的详细信息(姓名,年龄、城市)

    from xml.dom import minidom
    #打开文件
    dom=minidom.parse('Class_info.xml')
    #获取文档对象元素
    root=dom.documentElement
    #根据标签名称获取标签对象
    names=root.getElementsByTagName('name')
    ages=root.getElementsByTagName('age')
    citys=root.getElementsByTagName('city')
    #分别打印显示xml文档标签对里面的内容
    for i in range(4):
        print(names[i].firstChild.data)
        print(ages[i].firstChild.data)
        print(citys[i].firstChild.data)

    运行结果:

    Nancy
    23
    Chengdu
    Anne
    24
    Chongqing
    Hugh
    25
    Beijing
    Bob
    27
    Shanghai


    读取属性节点的值

    案例:分别读取打印老师和学生的账号密码。

    from xml.dom import minidom
    dom=minidom.parse('Class_info.xml')
    root=dom.documentElement
    logins=root.getElementsByTagName('login')
    #获取login标签的username属性
    for i in range(2):
        username=logins[i].getAttribute('username')
        password=logins[i].getAttribute('password')
        print(username)
        print(password)

    运行结果:

    student
    123456
    teacher
    888888


    读取子节点信息

    案列:读取子节点<student>相关属性

    from xml.dom import minidom
    dom=minidom.parse('Class_info.xml')
    root=dom.documentElement
    tags=root.getElementsByTagName('student')
    print(tags[0].nodeName)
    print(tags[0].nodeType)
    print(tags[0].nodeValue)

    运行结果:

    student
    1
    None

  • 相关阅读:
    【C++学习】C++中的new VS C语言中的malloc
    【C++学习】多态——解析树实例分析
    【C++错误处理】multiple definition of
    VS.NET控件命名规范
    ASP.NET跨页面传值技巧总结
    marquee+js实现某个区域的“无缝滚动效果”
    vs2008与oracle数据库连接
    C#中HashTable的用法
    1. asp.net实现单点登陆
    GridView实现某列中相同值合并(不规则表)
  • 原文地址:https://www.cnblogs.com/NancyRM/p/8044015.html
Copyright © 2020-2023  润新知