docx文件本质上是一个遵循Office Open XML规范的压缩包,内部包含多个XML格式的文件和资源,document.xml就是其中负责存储文档正文内容的核心文件,所有段落、文字、格式相关的信息都记录在这个文件里。

document.xml的基本定义
当我们把docx文件的后缀名改成zip并解压后,会在word目录下找到document.xml文件。这个文件采用XML格式编写,遵循特定的命名空间规范,文档的每一个段落对应<w:p>标签,段落里的每一段文本对应<w:t>标签,所有正文内容都嵌套在这些标签结构中。
比如一段简单的document.xml内容结构如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p>
<w:r>
<w:t>这是第一段文本内容</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>这是第二段文本内容</w:t>
</w:r>
</w:p>
</w:body>
</w:document>
手动提取document.xml中的文本内容
如果没有编程基础,也可以通过手动操作提取内容,步骤如下:
- 找到需要处理的docx文件,右键选择重命名,把后缀名从
.docx改成.zip,系统提示确认修改时选择是 - 解压这个zip压缩包,进入解压后的文件夹,找到
word子目录 - 用文本编辑器或者浏览器打开
word目录下的document.xml文件 - 找到所有
<w:t>标签,标签内部的内容就是文档的正文文本,手动复制即可
通过Python编程提取文本内容
如果需要批量处理多个docx文件,手动操作效率很低,我们可以通过Python编写脚本自动提取,需要用到zipfile和xml.etree.ElementTree两个标准库。
实现步骤
- 使用
zipfile库打开docx压缩包,读取内部的document.xml文件内容 - 使用
xml.etree.ElementTree解析XML内容,定位到<w:t>标签 - 提取所有
<w:t>标签的文本内容,拼接成完整的文档文本
示例代码
下面是完整的Python实现代码:
import zipfile
import xml.etree.ElementTree as ET
def extract_text_from_docx(docx_path):
# 打开docx文件(本质是zip压缩包)
with zipfile.ZipFile(docx_path, 'r') as docx_zip:
# 读取word/document.xml的内容
xml_content = docx_zip.read('word/document.xml')
# 解析XML内容
root = ET.fromstring(xml_content)
# 定义w命名空间的URI
namespace = {'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'}
# 查找所有的w:t标签
text_nodes = root.findall('.//w:t', namespace)
# 拼接所有文本内容
full_text = ''.join([node.text for node in text_nodes if node.text])
return full_text
if __name__ == '__main__':
# 替换为你的docx文件路径
docx_file = 'test.docx'
result = extract_text_from_docx(docx_file)
print(result)
运行上面的代码,传入docx文件的路径,就能直接输出文档里的所有文本内容,不需要手动解压和查找标签。
注意事项
- document.xml只存储正文内容,页眉页脚、批注、尾注等内容存储在其他XML文件里,如果需要提取这些内容需要解析对应的文件
- 如果docx文件有加密保护,无法直接解压读取document.xml,需要先解除文件保护
- 解析XML时要注意命名空间的问题,缺少命名空间配置会导致无法正确定位到
<w:t>标签
docxdocument.xmlXML解析文本提取zip解压修改时间:2026-07-01 19:15:28