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

基于文件名批量填充XML文件指定标签内容的方法咨询

基于文件名批量填充XML文件指定标签内容的方法咨询

嘿,这个批量修改XML的需求完全可以用脚本高效搞定,给你几个不同平台的实用方案,按需选择就行:

方案一:Python脚本(跨平台,适合所有系统)

Python的xml.etree.ElementTree模块能轻松处理XML结构,脚本可读性强还容易调整。把下面的代码保存为fill_xml_tags.py,放到你的XML文件目录里运行就行:

import os
import xml.etree.ElementTree as ET

# 遍历当前目录下所有以.xml结尾的文件
for filename in os.listdir('.'):
    if filename.endswith('.xml'):
        # 从文件名提取日期和自定义名称部分
        name_parts = filename.replace('.xml', '').split('_', 1)
        if len(name_parts) != 2:
            print(f"跳过不符合格式的文件:{filename}")
            continue
        date_str, title_str = name_parts

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

        # 填充<date>标签
        date_tag = root.find('date')
        if date_tag is not None:
            date_tag.text = date_str

        # 填充<title>标签
        title_tag = root.find('title')
        if title_tag is not None:
            title_tag.text = title_str

        # 如果只想把整个文件名(不带.xml)填到title,替换上面的title_tag.text为:
        # title_tag.text = filename.replace('.xml', '')

        # 保存修改后的XML
        tree.write(filename, encoding='utf-8', xml_declaration=True)
        print(f"已处理文件:{filename}")

运行方式:打开终端/命令提示符,进入文件目录,执行python fill_xml_tags.py(Python3环境可能需要用python3)。

方案二:Windows PowerShell脚本

如果你用Windows,直接用PowerShell就能搞定,不用额外装工具。保存为Fill-XmlTags.ps1,右键选择“用PowerShell运行”:

Get-ChildItem -Filter *.xml | ForEach-Object {
    $filename = $_.Name
    $nameWithoutExt = $filename -replace '\.xml$', ''
    $parts = $nameWithoutExt -split '_', 2
    if ($parts.Count -ne 2) {
        Write-Host "跳过不符合格式的文件:$filename"
        return
    }
    $dateStr = $parts[0]
    $titleStr = $parts[1]

    # 读取XML内容
    $xml = [xml](Get-Content $_.FullName)
    # 填充标签
    $xml.htf1.title = $titleStr
    $xml.htf1.date = $dateStr

    # 若要填充整个文件名到title,替换上面两行:
    # $xml.htf1.title = $nameWithoutExt

    # 保存修改
    $xml.Save($_.FullName)
    Write-Host "已处理文件:$filename"
}

方案三:Linux/macOS Shell脚本

用sed命令就能快速替换,因为你的XML结构很简单,没有复杂嵌套,适合用文本替换的方式:

#!/bin/bash

for file in *.xml; do
    if [[ ! -f "$file" ]]; then
        continue
    fi
    name_no_ext="${file%.xml}"
    # 分割日期和文件名部分
    IFS='_' read -r date_str title_str <<< "$name_no_ext"

    # 替换<title>标签内容
    sed -i.bak "s/<title><\/title>/<title>$title_str<\/title>/g" "$file"
    # 替换<date>标签内容
    sed -i.bak "s/<date><\/date>/<date>$date_str<\/date>/g" "$file"

    # 如果只想把整个文件名填到title,替换上面的sed命令为:
    # sed -i.bak "s/<title><\/title>/<title>$name_no_ext<\/title>/g" "$file"

    # 删除备份文件(可选)
    rm "${file}.bak"
    echo "已处理文件:$file"
done

保存为fill_xml.sh,执行chmod +x fill_xml.sh赋予执行权限,然后运行./fill_xml.sh即可。

所有方案都做了格式校验,会跳过不符合YYYY-MM-DD_filename.xml格式的文件,避免出错。如果只是需要把整个文件名(不带后缀)填到title里,注释掉对应代码,打开简化版本的代码就行。

备注:内容来源于stack exchange,提问作者niessenty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:37:46