Python修改XML树节点属性时出现AttributeError问题咨询
问题原因
- 错误读取XML属性:
Name是<Item>节点的属性,而非子节点,使用child.find("Name")查找子节点会返回None,调用.text属性时就会触发AttributeError。 - 逻辑错误:嵌套循环遍历目标列表会导致
Selected属性被反复覆盖,最终仅保留与列表最后一个元素的对比结果,无法实现需求。 - XPath路径错误:如果你的
root为XML根节点<Objects>,原路径./Objects/BigObj/ItemList/Item多写了一层<Objects>节点,会导致找不到目标节点。
修正后实现代码
lslist = ["s_1","s_4"] # 可先打印root.tag确认根节点名称,按需调整XPath路径 for child in root.findall("./BigObj/ItemList/Item"): # 使用get方法直接读取节点属性 item_name = child.get("Name") # 单次判断即可完成属性设置 child.set("Selected", "true" if item_name in lslist else "false")
验证说明
执行代码后,Name为s_1、s_4的<Item>节点Selected属性会被设置为true,其余节点属性会被设置为false,符合需求。
内容的提问来源于stack exchange,提问作者nuta_nu_
相关产品推荐
相关产品推荐

