xml 解析

xml 解析docx格式文档详解:xml解析html还原一、应用场景:有什么用处?很多人在处理企业信息化的工作中,经常会用到word的解析。理论上,word里展示的所有内容,程序员都能拿到。能解析word的前提,就是docx格式。二、docx格式:为什么出现?不知道您各位有没

docx格式文档详解:xml解析html还原   一、应用场景:有什么用处?   很多人在处理企业信息化的工作中,经常会用到word的解析。理论上,word里展示的所有内容,程序员都能拿到。能解析word的前提,就是docx格式。   二、docx格式:为什么出现?   不知道您各位有没有印象,从某个时期开始,微软办公文件名的小尾巴多了一个“x”。原来word、PowerPoint还有excel,后缀名分别是doc、ppt、xls。后来,就突然涌现出了docx、pptx、xlsx。   到目前为止,这些x们占据了主流市场。   
xml 解析
xml 解析   为什么?为什么要这样?我仿佛听到Office家族在抱着扫帚悲伤地唱:你伤害了Word,还Excel而过,你Access的贪婪,我PowerPoint……   原来的doc格式是加密的,只有微软自己家的软件才能打开。   后来微软觉得,这样并没有让自己很神圣,反而限制了自己的发展。   比如,金山WPS也是搞办公软件的,它的发展很快,积累了很多用户。不少人开始用wps了,word的用户面临被瓜分。于是,微软就基于Office Open XML标准,把文档家族做了兼容。   因为新标准是采用的xml格式记录信息的,所以就在.doc后面加了个x。新标准之后,即便是微软创建的文档,WPS也能打开。这样,用户只关心文档就行,不用在意用哪个软件,这就实现了用户共享。   反正,是这个意思,我猜的,别全信……   三、文件结构:怎么来解析?   那么,docx格式究竟是什么样子的呢?   
xml 解析
xml 解析   它看起来是个文件,其实,它是个压缩包。   下面就是一个docx文档,是我亲手编辑的。   
xml 解析
xml 解析   我再亲自做一下解压缩:将.docx改为.zip,右键选择解压文件,它就露出原形了。   
xml 解析
xml 解析   上图演示了解压缩,并打开了文件夹,这是文档里出现的图片。分析发现,在docx中同一张图复制多次,media里面只保留一张原图。这说明,它是个勤俭节约的好孩子。承载同样多的内容,docx格式比doc的体积要小。   正如我们看到,解压后它是有目录结构的。   
xml 解析
xml 解析   放心,我不会挨个把文件都给你介绍一遍。因为,那并没有什么用。即便有用,你也记不住。即便你记得住,我也说不明白……为什么要学习那么全面的知识呢?汉字总计10万多个,常用字只有2500个,够用了。   我说几个比较关键的点。   3.1 主文件 document.xml   位于word下的文件,是docx的主战场。可以说,文档中你能看到的所有内容,在这里都有直接或者间接的记录。   是一个格式的文档。   我们来打开它,咱们先只打开一级。   为了你能看下去,我对数据做了处理,保证你只能看到关键信息。   我们看到,体里,只有3种标签,分别是、和。   
xml 解析
xml 解析   一个docx文档,基本由这三种成分组成。指的是,指的是段落,表示表格。全称是,这个千万别记,容易扰乱思路。   清空你的大脑,docx文档里就两种大类,一种叫段落,另一种叫表格。   3.2 段落标签 w:p   在docx中,段落是最常见的,是文档中最主要的组成单。   和你理解的段落一样。不换行就属于一个段落。即便是“咔咔咔”敲上6个回车,虽然没有内容,那它也属于6个段落,在中是6个。   另外,包含图片、流程图、公式等素的内容,也是包含在段落中的。换句话说,它们都是小弟。   我们能用代码取到段落的信息吗?当然能!(这自问自答,被怀疑是凑字数)   我们用哪类编程语言都可以做到,因为仅仅就是读取文件。   但是对于教学而言,用无疑是最佳的选择。   我们看一下打印结果,它和源文档完全对应,一个都没有少。   
xml 解析
xml 解析   下面该详细说一下的小弟们了。   3.3 文本标签 w:t   在纷杂的文件中,可以扒拉出来一个叫标签。   这里面存储的内容,就是word里面的文字,就是的简称。   你在docx里面看到的每一个字,基本上都是被和所包裹的。   也就是说,如果我们拿出所有标签内的文本,我们就做到了纯文本docx的解析。   代码,其实很简单,就是在素中,扫描的标签并取出其内容。   上面我们已经拿到了标签,所以从那里继续。   看看代码对应的效果。   
xml 解析
xml 解析   恭喜你,你已经学会了解析docx的文本了。   是的,提取一个docx的文本,就是这么简单。你现在就可以写一个程序,可以做到把docx转为txt。   但是……有一点我要告诉你,运行代码里的可能会报错,为了便于你理解,我特意写了伪代码。实际上,要从中取出文本内容,可以像下面这样:   我认为这么讲,你反而能理解。因为,不用在理解什么叫的时候,还要分散注意力到正则表达式。   3.4 连续块 w:r   上面我们讲了如何去解析文字。但是,那太简单了。   文字是有样式的。   
xml 解析
xml 解析   都在同一段内的文字,它们的样式,可能不一样。   比如前两个字是红色,那么这两个字样式一样。但是,后两个字是绿色,和前面又不一样。   为了解决这个问题,docx把具有相同样式的文字,用标签包裹。   
xml 解析
xml 解析   代表。关于这个的解释,很多国内文档都直接翻译为“”。   其实,run在英文中有很多解释。我觉得在这里更适合它的释义应该是:“一段”、“一系列”、“连续上演”。因此,我个人给这个标签起名叫:。表示在这个标签之内的文本,是一个系列的,他们的特点是连续不间断的。   代码依然是处理文件的那一套,不是找标签就是拿属性。   还有其他的样式标签,你可以自己研究。我这里先抛砖引玉,举两个例子。   比如上面例子中的字体颜色,一般在标签内。依然表示,表示,表示,是修饰、装饰的意思。这个标签的释义就是:连续块的样式说明。类似的还有,表示对段落的样式说明。,表示对表格单格的样式说明。   我们来看一下,连续块修饰是如何定义的。   比如对于粗体、斜体的说明。   
xml 解析
xml 解析   用代码进行判断,主要是的读取。能找到,就说明有此种样式的标记。   再比如对于各种线条的说明。
xml 解析
xml 解析   上面的例子,如果用代码进行判断的话,除了对 存在的判断,还需要属性值,表示用了哪一类具体的样式。   我可以很负责任地说,只要是文档中呈现的信息,在文件中都可以找到对应的标注。   我可以“吧啦吧啦”全告诉你,但是会影响你看其他的内容。有兴趣你可以去查资料,都是手册类型的资料,很方便。   我倒是觉得,你自己在word中标记一下,然后解压缩观察文件的变化,这样子学的更牢。反正我就是这么学来的。   以下是我用html把一个word文档做了复原。   这是docx原文档:   
xml 解析
xml 解析   这是解析docx文档后呈现的html页面:   
xml 解析
xml 解析   我们可以看到,包括字号、字体、字色、标线都可以复原。   只剩下两个重要的内容没有说了。那就是图片和表格。   3.5 图像标签 w:drawing   docx中的图片是如何从中提取出来的呢?   你在连续块中会发现有一个标签。这里面主要存放的,就是图画相关的信息。   图片仅仅是中的一个小分类。除了图片,还有图表、形状、流程图等。   
xml 解析
xml 解析   今天,咱们说个最简单的,那就是如何提取图片。   图片的标签是,他在中如下定义:   其中,图片文件就藏在中,里面的就是捕获图片的线索。   还记不记得解压缩时,那个media文件夹,里面有好多图片。   
xml 解析
xml 解析   是有图片,但这也不是呀?   别急,有个文件专门做关联这件事情。它就是解压缩之后的文件。   打开这个文件:   哈哈,这里有档案,记录了哪个指向哪个文件。于是,我们解析这个文件,就可以拿到对应关系。   然后,遇到中等于的,就把这个图片文件展示出来。   这,就实现了图片的解析。   可以鼓掌了!   3.6 表格标签 w:tbl   表格标签的地位很重,它和段落标签平级。   分析整个文档的顶层组成素,我们不难发现,除了就是。   一开始,我不理解。为什么图表、流程图那么复杂的素,却不配得到表格那么高的地位。天理何在?   后来,我解析到一个表格后发现。我,好像低估了大佬的地位。   
xml 解析
xml 解析   如果,你看到上面的图没有笑喷。那说明,你可能没有看懂本文。或者是我的笑点出了问题。   单纯表格的结构,其实不复杂。但是,表格里每一个单格,却可以容纳另一个word文档。表格里面,图片、图表、文本样式,甚至表格里再来一个表格,什么都可以添加,它甚至是包含了大佬。和并列,它反而是委屈的。   我们来看一下表格的基本结构。   节点素中,主要有两部分内容,一个介绍表格列的个数。另一个是包含表格行的信息。 是的缩写。   其中,里面有,这里面是格子的内容。我们发现其内容,居然是一个它的兄弟节点。在此,给表格大佬深深地鞠上一躬。   是的缩写,表示单格的意思。有人可能会说,是的缩写,表示表格的列。当我后面论述带有合并单格的表格时,从结构上看,我们会感觉更适合语境。   先说基本表格的解析,如下图所示:   
xml 解析
xml 解析   解析的代码参考如下:   运行一下代码,结果如下:   
xml 解析
xml 解析   这里面我又挖坑了,除了前面讲时的陷阱之外。的内容应该是去解析完整的结构,而这里我只取了文本。这样最简单。因为,我们是要理解表格的结构。因此,其他的可以假装看不见。   但是,也由此可见,做好表格解析的前提,是做好段落解析。因为表格单格里是段落。   我相信,有了表格的解析结果(二维数组),你很容易就可以把它还原成表格页面用于展示。只需要循环就好,第一层循环行,第二层循环列。   我还是用1分钟写一下代码吧:   据我所知,世界上的表格除了上面那种简单的,还有一些稍微复杂的。那就是带有合并单格的表格。   比如下面这种:   
xml 解析
xml 解析   这类表格的解析稍微复杂一些,它们属于复杂里面最简单的。   我们来看看他们的数据是如何定义的。   首先看带有跨行的表格的例子。   
xml 解析
xml 解析   对于跨行的情况,我们发现表格的数据,该有的行和列,数量都没有变。只是在要合并的单格上标记了一个标签。   这个标签表示有跨行的单格。表示,是竖直方向的意思。表示竖直合并。这个标签里面还有属性值,当值为时表示此单格开始出现合并,表示此单格没有结束,继续保持,直到遇到非情况。   再来看看跨列的情况。   
xml 解析
xml 解析   跨列因为发生在行内,是行内矛盾,不影响其他行。所以,我们看到只有在第1行的第1格中,采用标签,说明本行有跨列的单格。值是,表示跨个单位。   为什么我前面说,是的缩写。我的依据就在这里。其实这个表格的结构是2行2列。如果指的是的话,它应该有2个,后一个复用前一个。但是,我们看上图里的结构,它只有一个。那我们称呼它叫单格更贴切,因为它只有一个框。你可以反驳我,我会立马说,你说的对,但以后依然称呼它单格。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/83725.html

(0)
上一篇 2024年 7月 28日
下一篇 2024年 7月 28日

相关推荐

关注微信