• Python xml.dom.minidom 读取xml


    之前写过sax 读取xml 具体的可以点击查看

    这里试下dom 读取xml

    dom 读写xml的几个属性

    parse 解析xml

    documentElement 获取根节点

    nodeName 获取节点名称

    nodeType 获取字节点

    childNodes 获取子节点

    hasAttribute 获取节点属性

    getElementsByTagName 这个一般是根据节点名称获取内容

    具体实现demo1

    1. "1.0" encoding="UTF-8"?>
    2. <config_content>
    3. <lib name="a" path="a的路径"/>
    4. <lib name="b" path="b的路径"/>
    5. <lib name="c" path="c的路径"/>
    6. config_content>

    具体代码

    1. import xml.dom.minidom
    2. def read_xml():
    3. # 解析xml文件
    4. dom = xml.dom.minidom.parse("v3_config.xml")
    5. # 获得根节点
    6. domData = dom.documentElement
    7. # 根据节点名称寻找节点,返回列表
    8. configDatas = domData.getElementsByTagName("lib")
    9. for i in configDatas:
    10. print("name的内容:%s,path的内容:%s" % (i.getAttribute("name"), i.getAttribute("path")))
    11. if __name__ == "__main__":
    12. read_xml()

    打印结果

    name的内容:a,path的内容:a的路径
    name的内容:b,path的内容:b的路径
    name的内容:c,path的内容:c的路径

    具体demo2

    1. "1.0" encoding="UTF-8"?>
    2. <config_content>
    3. <type class="3年级">
    4. <lib name="体育">优秀lib>
    5. <lib name="语文">一般lib>
    6. <lib name="数学">优秀lib>
    7. type>
    8. <type class="5年级">
    9. <lib name="体育">一般lib>
    10. <lib name="语文">优秀lib>
    11. <lib name="数学">良好lib>
    12. type>
    13. config_content>

    具体代码

    1. import xml.dom.minidom
    2. def read_xml():
    3. # 解析xml文件
    4. dom = xml.dom.minidom.parse("v2_config.xml")
    5. # 获得根节点
    6. domData = dom.documentElement
    7. # 根据节点名称寻找节点,返回列表
    8. configDatas = domData.getElementsByTagName("type")
    9. for config in configDatas:
    10. if config.hasAttribute("class"):
    11. print("======type: %s======" % config.getAttribute("class"))
    12. libdatas = domData.getElementsByTagName("lib")
    13. for i in libdatas:
    14. print("lib的属性: %s" % i.getAttribute("name"))
    15. print("lib的内容: %s" % i.childNodes[0].data)
    16. if __name__ == "__main__":
    17. read_xml()

    打印结果

    ======type: 3年级======
    lib的属性: 体育
    lib的内容: 优秀
    lib的属性: 语文
    lib的内容: 一般
    lib的属性: 数学
    lib的内容: 优秀
    lib的属性: 数学
    lib的内容: 一般
    lib的属性: 语文
    lib的内容: 优秀
    lib的属性: 体育
    lib的内容: 良好
    ======type: 5年级======
    lib的属性: 体育
    lib的内容: 优秀
    lib的属性: 语文
    lib的内容: 一般
    lib的属性: 数学
    lib的内容: 优秀
    lib的属性: 数学
    lib的内容: 一般
    lib的属性: 语文
    lib的内容: 优秀
    lib的属性: 体育
    lib的内容: 良好

    Process finished with exit code 0
     

    具体demo3

    1. "1.0"?>
    2. <data>
    3. <config name="上海">
    4. <access>1access>
    5. <year>2008year>
    6. <number>668669number>
    7. <areaConfig areaId="0" minInt32Value="-1" maxInt32Value="14"/>
    8. config>
    9. <config name="苏州">
    10. <access>4access>
    11. <year>2022year>
    12. <number>668666number>
    13. <areaConfig areaId="1" minInt32Value="-10" maxInt32Value="10"/>
    14. config>
    15. <config name="南京">
    16. <access>8access>
    17. <year>2023year>
    18. <number>668866number>
    19. <areaConfig areaId="2" minInt32Value="-100" maxInt32Value="140"/>
    20. config>
    21. data>

    代码

    1. import xml.dom.minidom
    2. def read_xml():
    3. # 解析xml文件
    4. dom = xml.dom.minidom.parse("v1_config.xml")
    5. # 获得根节点
    6. domData = dom.documentElement
    7. # 根据节点名称寻找节点,返回列表
    8. configDatas = domData.getElementsByTagName("config")
    9. for config in configDatas:
    10. if config.hasAttribute("name"):
    11. # 获取最外层节点
    12. print("======name: %s======" % config.getAttribute("name"))
    13. access = config.getElementsByTagName("access")[0]
    14. # 获取字节点的内容
    15. print("access: %s" % access.childNodes[0].data)
    16. year = config.getElementsByTagName("year")[0]
    17. print("year: %s" % year.childNodes[0].data)
    18. number = config.getElementsByTagName("number")[0]
    19. print("number: %s" % number.childNodes[0].data)
    20. areaConfig = config.getElementsByTagName("areaConfig")
    21. for i in areaConfig:
    22. print("areaConfig的内容弄 ,areaId:%s,minInt32Value:%s,maxInt32Value:%s" % (
    23. i.getAttribute("areaId"), i.getAttribute("minInt32Value"), i.getAttribute("maxInt32Value")))
    24. if __name__ == "__main__":
    25. read_xml()

    打印结果

    ======name: 上海======
    access: 1
    year: 2008
    number: 668669
    areaConfig的内容弄 ,areaId:0,minInt32Value:-1,maxInt32Value:14
    ======name: 苏州======
    access: 4
    year: 2022
    number: 668666
    areaConfig的内容弄 ,areaId:1,minInt32Value:-10,maxInt32Value:10
    ======name: 南京======
    access: 8
    year: 2023
    number: 668866
    areaConfig的内容弄 ,areaId:2,minInt32Value:-100,maxInt32Value:140

    Process finished with exit code 0
     

  • 相关阅读:
    使用Docker安装运行RabbitMQ---阿里云服务器
    全量知识系统问题及SmartChat给出的答复 之12 知识图表设计
    从零开始搭建个人网站①
    c++ 函数重载
    全新特征平台 FeatInsight 测试平台上线,现已开放抢先体验!
    实战计算机网络02——物理层
    “中国网事·感动2022”二季度网络感动人物评选结果揭晓
    Python爬虫xpath语法及案例使用
    MySQL-(2)
    js中HTMLCollection如何循环
  • 原文地址:https://blog.csdn.net/qq_33210042/article/details/130846945