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

基于Python实现XML转DOCX的方法咨询

XML转DOCX的实现方法(含Python方案及其他替代方案)

前置说明

首先需要先区分你手中XML的类型,两类XML的转换逻辑差异很大:

  1. 自定义结构的XML:你自己定义标签规则的普通XML文件
  2. OpenXML格式XML:DOCX解压后得到的标准化XML文件包,属于DOCX的底层存储格式

Python实现自定义XML转DOCX的步骤

  • 第一步:安装依赖库
    通用转换用python-docx库即可,安装命令:
    pip install python-docx
    
  • 第二步:解析XML源文件
    用Python内置的xml.etree.ElementTree模块解析XML,不需要额外安装依赖:
    import xml.etree.ElementTree as ET
    from docx import Document
    from docx.shared import Pt
    
    # 加载XML文件
    tree = ET.parse("source.xml")
    root = tree.getroot()
    # 初始化空白DOCX文档
    doc = Document()
    
  • 第三步:建立XML到DOCX的元素映射
    根据你自己的XML标签规则,把XML节点对应到DOCX的标题、段落、列表、表格等元素,示例如下(适配自定义XML结构即可):
    # 示例:假设XML中<title>标签对应一级标题,<paragraph>标签对应正文段落
    title = root.find("./title").text
    doc.add_heading(title, level=1)
    
    for para_node in root.findall("./content/paragraph"):
        para = doc.add_paragraph(para_node.text)
        # 可自定义段落格式,比如设置字号为12磅
        para.style.font.size = Pt(12)
    
  • 第四步:导出DOCX文件
    doc.save("output.docx")
    
    如果你需要生成格式非常复杂的DOCX(比如嵌套表格、自定义页眉页脚、复杂公式等),可以换用lxml库直接生成OpenXML节点,自由度更高,但需要了解ECMA-376的OpenXML规范。

Python实现OpenXML转DOCX的步骤

如果你的XML是DOCX解压后得到的OpenXML文件包,不需要做内容转换,直接按ZIP规范重新打包即可:

import zipfile
import os

def pack_openxml_to_docx(openxml_dir: str, output_docx_path: str):
    with zipfile.ZipFile(output_docx_path, "w", zipfile.ZIP_DEFLATED) as zf:
        for root, _, files in os.walk(openxml_dir):
            for file in files:
                file_full_path = os.path.join(root, file)
                # 生成压缩包内的相对路径,保证目录结构和原始DOCX解压后的结构一致
                arc_path = os.path.relpath(file_full_path, openxml_dir)
                zf.write(file_full_path, arcname=arc_path)

# 调用示例:openxml_dir是存放所有OpenXML文件的根目录
pack_openxml_to_docx("./openxml_files", "./output.docx")

其他可行的转换方案

  • 办公软件命令行转换:用LibreOffice/OpenOffice的命令行功能可直接实现XML到DOCX的批量转换,不需要写代码,适合非开发场景使用
  • XSLT模板转换:提前编写XSLT转换模板,把自定义XML直接转换为符合规范的OpenXML格式,再打包为DOCX,适合XML结构固定的大批量转换场景,转换效率远高于逐节点解析

内容的提问来源于stack exchange,提问作者Mariia Fedoruk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:03