使用Python3 Minidom提取XML标签内的数值数据
用Python3 minidom提取XML标签中的数值
我来给你一步步讲解怎么用Python3的minidom来提取你提供的XML片段里的数值,首先要注意的是,你给的是XML片段,minidom需要完整的XML结构才能解析,所以我们得先给它套一个根节点(比如<root>)。
具体步骤和代码示例
首先导入minidom模块,然后解析XML内容,再逐个提取需要的数值:
from xml.dom import minidom # 把你的XML片段补全为完整的XML结构 xml_content = """ <root> <start-date type="date">1980-12-12</start-date> <end-date type="date">2018-05-04</end-date> <data type="array"> <datum type="array"> <datum type="date">2018-05-04</datum> <datum type="float">178.25</datum> <datum type="float">184.25</datum> <datum type="float">178.17</datum> <datum type="float">183.83</datum> <datum type="float">5620</datum> </datum> </data> </root> """ # 解析XML dom = minidom.parseString(xml_content) # 提取start-date和end-date的数值 start_date = dom.getElementsByTagName('start-date')[0].childNodes[0].data end_date = dom.getElementsByTagName('end-date')[0].childNodes[0].data print(f"开始日期: {start_date}") print(f"结束日期: {end_date}") # 提取data下的datum数组中的数值 # 先找到最外层的data标签,再找到里面的datum(type为array的那个) data_array = dom.getElementsByTagName('data')[0].getElementsByTagName('datum')[0] # 遍历这个数组里的所有子datum标签 datum_items = data_array.getElementsByTagName('datum') extracted_values = [] for item in datum_items: # 获取标签的type属性 item_type = item.getAttribute('type') # 获取标签内的文本值 item_value = item.childNodes[0].data # 根据类型转换数值(可选,如果你需要转成对应的数据类型) if item_type == 'float': item_value = float(item_value) extracted_values.append((item_type, item_value)) print("\n提取的data数组数值:") for type_val, val in extracted_values: print(f"类型: {type_val}, 值: {val}")
代码关键点说明
minidom.parseString():用来解析XML字符串,如果你的XML是存放在文件里,可以用minidom.parse('your_file.xml')。getElementsByTagName(tag_name):根据标签名获取所有匹配的节点,返回的是节点列表,所以我们用[0]取第一个匹配的节点(因为你的XML里每个标签都是唯一的)。childNodes[0].data:minidom中,标签的文本内容是作为标签的子节点存在的,所以我们取第一个子节点的data属性来获取文本值。getAttribute(attr_name):用来获取标签的属性值,比如这里的type属性,你可以根据它来区分不同类型的数值,做对应的类型转换。
运行这段代码,就能把你需要的所有数值都提取出来啦~
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

