如何修改Python代码以从XML属性中解析ID(替代原有的ID元素解析逻辑)
如何修改Python代码以从XML属性中解析ID(替代原有的ID元素解析逻辑)
别担心,我来帮你调整代码适配新的XML结构!先理清楚前后的变化:
原来的XML结构与代码逻辑
原来的XML是交替的<id>和<name>子元素:
<members> <id>26</id> <name>Alexi Delano</name> <id>27</id> <name>Cari Lekebusch</name> </members>
对应的代码用grouper把相邻的id和name文本两两分组,再生成id和name对。
现在的XML结构变化
现在XML把ID改成了<name>元素的属性,结构变成:
<members> <name id="26">Alexi Delano</name> <name id="27">Cari Lekebusch</name> </members>
这种情况下,我们不需要再用grouper分组了,直接遍历每个<name>元素,分别提取它的id属性和文本内容即可。
修改后的代码
把你的element_members方法改成这样:
def element_members(self, element): # 遍历<members>下的每个<name>子元素 for name_element in element.iterchildren(): # 从元素属性中获取id,转成整数类型 member_id = int(name_element.get('id')) # 获取<name>的文本内容并去除首尾空白 member_name = name_element.text.strip() yield member_id, member_name
关键修改点说明
- 去掉了原来的
grouper逻辑,因为现在每个<name>元素已经包含了我们需要的所有信息(id属性+name文本) - 用
name_element.get('id')获取元素的id属性值,再转成整数(和原来的int(id)保持一致的类型) - 直接从
name_element.text获取名称文本,再用strip()处理空白,和原来的逻辑保持一致
这样修改后,代码就能适配新的XML结构,正常生成id和name的配对啦!
备注:内容来源于stack exchange,提问作者Paul Taylor
相关产品推荐
相关产品推荐

