如何从XML中提取releaseDate参数值?已尝试方法无效
问题描述
我曾尝试过一种方法,但对我无效。我想要从以下XML中获取releaseDate的值:
return (<Product prodID="bed" lang="en"> <ProductState stateType="Published" stateDateTime="2019-04" testDate="2019-04" releaseDate="2019"/> )
我尝试了以下代码:
from pathlib import Path import os import tempfile import xml.etree.ElementTree as ET xmlfile = 'path_to_xml' tree = ET.parse(xmlfile) root = tree.getroot() for elm in root.findall("./Product/ProductStatus/releaseDate"): print(elm.attrib)
解决方案
你的代码有两处错误导致无法获取目标值:
- 元素名称错误:XML中的元素是
ProductState,但你代码里写的是ProductStatus,路径匹配失败 - 取值逻辑错误:
releaseDate是ProductState的属性,并非子元素,不能通过findall直接定位到它
修正后的代码如下:
import xml.etree.ElementTree as ET xmlfile = 'path_to_xml' tree = ET.parse(xmlfile) root = tree.getroot() # 遍历所有Product下的ProductState元素 for product_state in root.findall("./Product/ProductState"): # 获取releaseDate属性值 release_date = product_state.get("releaseDate") print(release_date)
如果你的XML根节点就是<Product>(比如完整XML仅包含这段内容),可以简化代码:
import xml.etree.ElementTree as ET xmlfile = 'path_to_xml' tree = ET.parse(xmlfile) root = tree.getroot() # 直接获取根节点下的ProductState元素 product_state = root.find("ProductState") if product_state: print(product_state.get("releaseDate"))
内容的提问来源于stack exchange,提问作者newbie101
相关产品推荐
相关产品推荐

