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

如何使用Python BeautifulSoup修改XML文件中指定标签的内容

问题原因
  • 字符串转义错误:代码中bs_data.path.string = "C:\"存在语法问题,Python里反斜杠\是转义字符,\"会将后续的双引号转义为普通字符,导致该行字符串没有正确闭合,运行直接抛出语法错误,后续写文件逻辑根本不会执行。
  • 文件操作不规范:写文件时没有使用with上下文管理器,也没有手动调用close()方法,修改后的内容还停留在内存缓冲区,没有真正写入磁盘文件。
  • 编码未指定:Windows系统默认用GBK编码打开文件,若XML文件为UTF-8编码,读写过程可能出现编码异常,导致写入失败。
修复后的代码
from bs4 import BeautifulSoup
import os

curr_dir = os.path.join(os.path.dirname(__file__), 'img')
files = os.listdir(curr_dir)

for file in files:
    # 优化判断逻辑,仅匹配后缀为xml的文件
    if file.endswith(".xml"):
        file_path = os.path.join(curr_dir, file)
        # 读文件指定UTF-8编码
        with open(file_path, 'r', encoding='utf-8') as f:
            xml_data = f.read()
        bs_data = BeautifulSoup(xml_data, "xml")
        # 转义反斜杠,也可以写为r"C:/" 用正斜杠路径Python也可正常识别
        bs_data.path.string = "C:\\"
        # 写文件用with上下文自动管理句柄,指定UTF-8编码
        with open(file_path, 'w', encoding='utf-8') as xml_file:
            xml_file.write(bs_data.prettify())

补充说明:如果部分XML文件可能不存在path标签,可增加判断if bs_data.find('path'):再执行修改逻辑,避免抛出属性不存在的异常。

内容的提问来源于stack exchange,提问作者S Andrew

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:45:03