You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python删除XML文件中指定UserName及其关联的全部FeatureId

解决方法

核心思路是直接删除目标用户名对应的整个<FeatureEntitlementDetail>父节点即可,无需单独删除关联的FeatureId,该节点本身就包含了对应用户的所有FeatureId关联数据,删除父节点会同步移除所有子节点内容。

完整实现代码

import xml.etree.ElementTree as ET

# 配置参数
xml_path = "替换为你的XML文件路径"
target_user = "raj@abc.com"
output_path = "修改后的输出文件路径.xml"

# 解析XML文件
tree = ET.parse(xml_path)
root = tree.getroot()

# 定位到用户权限列表父节点
user_list_node = root.find("./CovRDMData/EnabledFeatureListForUsers")

# 遍历所有用户权限节点,注意转成list避免遍历过程中修改节点导致的报错
for entitlement in list(user_list_node.findall("./FeatureEntitlementDetail")):
    user_node = entitlement.find("./UserName")
    # 匹配到目标用户则删除对应节点
    if user_node is not None and user_node.text.strip() == target_user:
        user_list_node.remove(entitlement)
        # 如果XML中同一个用户名只出现一次,匹配到后可以直接终止遍历提高效率
        break

# 美化XML格式(Python 3.9及以上版本支持,低版本可注释该行)
ET.indent(tree, space="    ")

# 写入修改后的XML,保留XML声明和utf-8编码
tree.write(output_path, encoding="utf-8", xml_declaration=True)

注意事项

  • 如果需要批量删除多个用户,可将target_user改为用户名列表,调整判断逻辑即可,同时删除break语句
  • 代码中先将查询到的节点列表转为list再遍历,是为了避免遍历过程中移除节点导致的迭代异常
  • 运行代码后输出的XML文件中,目标用户对应的整组权限数据包括所有关联的FeatureId会被完全删除

内容的提问来源于stack exchange,提问作者Ashok Anumula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:45:08