上面的例子,如果用代码进行判断的话,除了对 tag存在的判断,还需要获取属性值w:val,表示用了哪一类具体的样式。
w_u = w_rPr.getElementsByTagName("w:u")
if w_u:
# 获取属性值用 getAttribute
line_value = w_u[0].getAttribute("w:val")
if line_value == "single":
print("是下划线")
if line_value == "double":
print("是双划线")
if line_value == "wave":
print("是波浪形线")
if line_value == "dotted":
print("是虚线")
我可以很负责任地说,只要是文档中呈现的信息,在xml文件中都可以找到对应的标注。
我可以“吧啦吧啦”全告诉你,但是会影响你看其他的内容。有兴趣你可以去查资料,都是手册类型的资料,很方便。
我倒是觉得,你自己在word中标记一下,然后解压缩观察xml文件的变化,这样子学的更牢。反正我就是这么学来的。
以下是我用html把一个word文档做了复原。
这是docx原文档:
这是解析docx文档后呈现的html页面:
我们可以看到,包括字号、字体、字色、标线都可以复原。
只剩下两个重要的内容没有说了。那就是图片和表格。
3.5 图像标签 w:drawingdocx中的图片是如何从xml中提取出来的呢?
你在连续块<w:r>中会发现有一个<w:drawing>标签。这里面主要存放的,就是图画相关的信息。
图片仅仅是<w:drawing>中的一个小分类。除了图片,还有图表、形状、流程图等。
今天,咱们说个最简单的,那就是如何提取图片。
图片的标签是<pic:pic>,他在xml中如下定义:
<w:drawing>
<pic:pic>
<pic:blipFill>
<a:blip r:embed="rId9"/>
</pic:blipFill>
</pic:pic>
</w:drawing>
其中,图片文件就藏在<a:blip r:embed="rId9"/>中,里面的rId9就是捕获图片的线索。
还记不记得解压缩时,那个media文件夹,里面有好多图片。