这里试下dom 读取xml
parse 解析xml
documentElement 获取根节点
nodeName 获取节点名称
nodeType 获取字节点
childNodes 获取子节点
hasAttribute 获取节点属性
getElementsByTagName 这个一般是根据节点名称获取内容
- "1.0" encoding="UTF-8"?>
- <config_content>
- <lib name="a" path="a的路径"/>
- <lib name="b" path="b的路径"/>
- <lib name="c" path="c的路径"/>
- config_content>
具体代码
- import xml.dom.minidom
-
-
- def read_xml():
- # 解析xml文件
- dom = xml.dom.minidom.parse("v3_config.xml")
- # 获得根节点
- domData = dom.documentElement
- # 根据节点名称寻找节点,返回列表
- configDatas = domData.getElementsByTagName("lib")
- for i in configDatas:
- print("name的内容:%s,path的内容:%s" % (i.getAttribute("name"), i.getAttribute("path")))
-
-
- if __name__ == "__main__":
- read_xml()
打印结果
name的内容:a,path的内容:a的路径
name的内容:b,path的内容:b的路径
name的内容:c,path的内容:c的路径
- "1.0" encoding="UTF-8"?>
- <config_content>
- <type class="3年级">
- <lib name="体育">优秀lib>
- <lib name="语文">一般lib>
- <lib name="数学">优秀lib>
- type>
- <type class="5年级">
- <lib name="体育">一般lib>
- <lib name="语文">优秀lib>
- <lib name="数学">良好lib>
- type>
- config_content>
具体代码
- import xml.dom.minidom
-
-
- def read_xml():
- # 解析xml文件
- dom = xml.dom.minidom.parse("v2_config.xml")
- # 获得根节点
- domData = dom.documentElement
- # 根据节点名称寻找节点,返回列表
- configDatas = domData.getElementsByTagName("type")
- for config in configDatas:
- if config.hasAttribute("class"):
- print("======type: %s======" % config.getAttribute("class"))
-
- libdatas = domData.getElementsByTagName("lib")
- for i in libdatas:
- print("lib的属性: %s" % i.getAttribute("name"))
- print("lib的内容: %s" % i.childNodes[0].data)
-
-
- if __name__ == "__main__":
- 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
- "1.0"?>
- <data>
- <config name="上海">
- <access>1access>
- <year>2008year>
- <number>668669number>
- <areaConfig areaId="0" minInt32Value="-1" maxInt32Value="14"/>
- config>
- <config name="苏州">
- <access>4access>
- <year>2022year>
- <number>668666number>
- <areaConfig areaId="1" minInt32Value="-10" maxInt32Value="10"/>
- config>
- <config name="南京">
- <access>8access>
- <year>2023year>
- <number>668866number>
- <areaConfig areaId="2" minInt32Value="-100" maxInt32Value="140"/>
- config>
- data>
代码
- import xml.dom.minidom
-
-
- def read_xml():
- # 解析xml文件
- dom = xml.dom.minidom.parse("v1_config.xml")
- # 获得根节点
- domData = dom.documentElement
- # 根据节点名称寻找节点,返回列表
- configDatas = domData.getElementsByTagName("config")
-
- for config in configDatas:
- if config.hasAttribute("name"):
- # 获取最外层节点
- print("======name: %s======" % config.getAttribute("name"))
- access = config.getElementsByTagName("access")[0]
- # 获取字节点的内容
- print("access: %s" % access.childNodes[0].data)
- year = config.getElementsByTagName("year")[0]
- print("year: %s" % year.childNodes[0].data)
- number = config.getElementsByTagName("number")[0]
- print("number: %s" % number.childNodes[0].data)
- areaConfig = config.getElementsByTagName("areaConfig")
- for i in areaConfig:
- print("areaConfig的内容弄 ,areaId:%s,minInt32Value:%s,maxInt32Value:%s" % (
- i.getAttribute("areaId"), i.getAttribute("minInt32Value"), i.getAttribute("maxInt32Value")))
-
-
- if __name__ == "__main__":
- 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