OXML结构化格式的Word试卷智能处理系统
2020-02-01吴为民
吴为民
(福建船政交通职业学院信息与智慧交通学院,福州350007)
0 引言
目前大多数的试卷系统,都把题库导入到数据库中,然后生成试卷时从题库中抽题形成试卷。这样的作法一是试卷的保密程度不够高,而且对于大量用图形图像的试题的支持不好,大部分只能支持文字类的试题。以Word文件直接作为题库的数据库,避免了按照常规的做法,题目需要导入到数据库中过程的繁琐和存在泄密的风险;而且实现题库的本地化,利用Word直接维护题库,可操作性和可视化程度高,以及对有图像的理工类的题目支持非常好[1-2]
1 Word文档的XML结构
较早的Word格式doc被称为“二进制”格式。从2007 Microsoft Office System开始,Microsoft Office使用基于Open XML的文件格式,例如.docx、.xlsx和.pptx。这些格式和文件扩展名适用于Microsoft Word、Micro⁃soft Excel和Microsoft PowerPoint。利用Word文档的XML结构,我们通过程序对Word文档进行增删改查的处理,实现类似数据库的功能,为将Word文档直接作为数据库奠定基础。
Docx文件是XML文件的Zip存档。最简单的Word文档的主要文档结构包含以下XML元素[3-4]:

其中:document:文档部分的根元素,它定义了主要文档的结构。Body:主体—用于收集构成文本的块级结构的容器。P:段。R:段落中的分句。T:文本。
2 Python的Word文档SDK
存在几个可用于在Python中读写MS Word文件的库。但是,由于其易用性,我们将使用python-docx模块。python-docx是用于创建和更新Microsoft Word(.docx)文件的Python库。在终端中执行以下pip命令,以加载python-docx模块,如下所示:
$pip install python-docx
使用python-docx模块,我们有3种不同的数据类型:
document:整个文档的Document对象。
Paragraph:文档对象内段落的段落对象。
Run:每个“段落”对象包含一个“运行”对象列表。

图1 Word基本数据结构……p>
