微软 WordXML格式初步分析

一、前言

Office2003以上,Word可以以XML文本格式存储,这样就可以使用外部程序创建Word文件,而不需要使用Word的对象。也能够自由的打开分析Word文件,或者发布到自己的Web页面,或者其他更多应用。

1、一个典型的WordXML结构

1)可以是如下的样子

<?xml version="1.0"?>
<w:wordDocument
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
  
<w:body>
      
<w:p>
       
<w:r>
        
<w:t>Hello,
World.</w:t>
       
</w:r>
      
</w:p>
   </w:body>
</w:wordDocument>

可以用记事本创建一个文件,将上面的XML内容粘贴,并保存为helloworld.xml,在Office
Word中打开它,就能看到如上图所示的内容。

2)这是最简单的WordXML内容,它包括这几部分

XML的声明和名称空间的指明:
<?xml
version="1.0"?>
<w:wordDocument
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">

3)文档内容

<w:body>…</w:body>

2、基本节点类型

从body内可以看出,构成实际文本内容的有3中类型节点:
<w:p> 表示一个段落

<w:r> 表示一个样式串,指明它包括的文本的显示样式

<w:t> 表示真正的文本内容

如果我们需要指明一个文本为粗体,需要怎么办呢?

<w:r>
   <w:rPr>

<w:b w:val="on"/>
  
</w:rPr>
   <w:t>
2.0C</w:t>
</w:r>

<w:b w:val=”on”> 表示该格式串种的文本为粗体。

这样,我们就知道<w:r>表示一个特定的文本格式,稍微复杂点的格式:

<w:r>
<w:rPr>
<w:b w:val="on"/>
<w:sz
w:val="40"/><w:szCs w:val="40"/>
<w:rFonts  
w:ascii="Arial" w:eastAsia="Arial" w:hAnsi="Arial" />
</w:rPr>

<w:t  xml:space="preserve">2.0C</w:t>
</w:r>

字体为粗体,尺寸为是40除2等于20相当于几号字体?,字体名称“Arial”

<w:t  xml:space="preserve"> 2.0C</w:t>

中的xml:space="preserve"从字面上理解是保持空格。

如果没有这内容的话文本的前后空格将会被Word忽略。

如果我们需要指定一个段的对齐方式,行距要怎么办呢?

这就要设置<w:p>的属性了。类似于这样:

<w:p>
<w:pPr>
<w:jc
w:val="right"/>
<w:spacing  w:line="600"
w:lineRule="auto"/>
</w:pPr>

</w:p>

对齐方向:<w:jc w:val=”right”/>  这儿是右对齐。

行距:<w:spacing w:line=”600” w:lineRule="auto"/> 
600是用行距的倍数乘240得出,如果是两倍行距,则是480。这儿应该是2.5倍行距。

由此可见,组装一个WordXML格式的文件是一件比较简单的事情。

将段属性包含在<w:pPr></w:pPr>中

将文本格式包含在<w:rPr></w:rPr>中

这儿的Pr是property的意思,表示这个块中是r(run)或p(paragraph)的格式设置。

一个WordXML的文件结束了吗?可以这样讲,但如果你双击刚才创建的XML文件,有很大机会不会由Word来打开它。

这是为什么呢?

我们还需要在合适的地方放置一条语句:

<?xml version="1.0"?>
   
<?mso-application
progid="Word.Document"?>
   
<w:wordDocument

用来指明这个xml文件的对应处理程序,对应注册表中的键值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\Filter\text/xml

但是,加入这一条语句后,双击打开时,Word将会提示XML的格式不正确,虽然能打开。那是因为还有许多的内容没有声明。我们就先不加这条语句。

3、页面设置

下面内容设置了页的宽,高,和页的各边距。各项的值均是英寸乘1440得出:

<w:body>…
<w:sectPr>
   
<w:pgSz w:w="12240" w:h="15840"/>
    <w:pgMar
w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720"
w:footer="720" w:gutter="0"/>
</w:sectPr>

</w:body>

4、页眉页脚

下面内容设置了页的页眉页脚:

w:sectPr wsp:rsidR="002C452C">
    <w:hdr
w:type="odd" >
       
<w:p>
           
<w:pPr>
               
<w:pStyle
w:val="Header"/>
           
</w:pPr>
           
<w:r>
               
<w:t>My
Header</w:t>
           
</w:r>
       
</w:p>
    </w:hdr>
   
<w:ftr w:type="odd">
       
<w:p>
           
<w:pPr>
               
<w:pStyle
w:val="Footer"/>
           
</w:pPr>
           
<w:r>
               
<w:t>My
Footer</w:t>
           
</w:r>
       
</w:p>
    </w:ftr>

</w:sectPr>
</w:body>

这两段都很直白,就不需要解释了。

5、文档设置

</w:body>

<w:docPr>
    <w:view
w:val="print"/><w:zoom w:percent="100"/>
</w:docPr>

</w:wordDocument>

docPr,就是document property的意思了。

表示文档的视图是“print”,视图比例100%

二、完整的XML文件实例

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no"
xml:space="preserve">

<w:body>
<w:p>
<w:pPr>
<w:jc w:val="left"/>
<w:spacing  w:line="240" w:lineRule="auto"/>
</w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="24"/><w:szCs w:val="24"/>
<w:rFonts   w:ascii="Arial" w:eastAsia="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:t>Niu don‘t like Red or Blue! It seems that </w:t>
</w:r>
<w:r>
<w:rPr>
<w:sz w:val="48"/><w:szCs w:val="48"/>
<w:rFonts   w:ascii="Arial" w:eastAsia="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:t>Hello world!</w:t>
</w:r>
</w:p>

<w:sectPr wsp:rsidR="002C452C">
<w:pgSz w:w="12240" w:h="15840"/>
<w:pgMar w:top="1526.4" w:right="3254.4" w:bottom="2966.4" w:left="1670.4" w:header="720" w:footer="720" w:gutter="0"/>
<w:hdr w:type="odd" >
<w:p>
<w:pPr>
<w:pStyle w:val="Header"/>
</w:pPr>
<w:r>
<w:t>Header</w:t>
</w:r>
</w:p>
</w:hdr>
<w:ftr w:type="odd">
<w:p>
<w:pPr>
<w:pStyle w:val="Footer"/>
</w:pPr>
<w:r>
<w:t>Footer</w:t>
</w:r>
</w:p>
</w:ftr>
</w:sectPr>
</w:body>

<w:docPr>
<w:view w:val="print"/><w:zoom w:percent="100"/>
</w:docPr>
</w:wordDocument>

三、其他关注

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:等线;
mso-ascii-font-family:等线;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:等线;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:等线;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

1、  
"Office XML Handler" is
the display name of the process MSOXMLED.EXE, which is locaded in C:\Program
Files\Common Files\microsoft shared\OFFICE16 on my computer. It is used to open
XML files (perhaps also other extentions?) and detect which MS Office program
the file should be associated with (if any), and then open the file with that
program.

This is explained in https://stackoverflow.com/a/1569619/1858923

2、  
DOM4J是
dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

3、  
XSLT、XPath和DOM的应用研究

1、  
"Office XML Handler" is
the display name of the process MSOXMLED.EXE, which is locaded in C:\Program
Files\Common Files\microsoft shared\OFFICE16 on my computer. It is used to open
XML files (perhaps also other extentions?) and detect which MS Office program
the file should be associated with (if any), and then open the file with that
program.

This is explained in https://stackoverflow.com/a/1569619/1858923

1、  
DOM4J是
dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

2、  
XSLT、XPath和DOM的应用研究

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:等线;
mso-ascii-font-family:等线;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:等线;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:等线;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

原文地址:https://www.cnblogs.com/yxli2008/p/11073549.html

时间: 2024-10-03 22:49:04

微软 WordXML格式初步分析的相关文章

学习:WordXML格式初步分析

Office2003以上,Word可以以XML文本格式存储,这样就可以使用外部程序创建Word文件,而不需要使用Word的对象.也能够自由的打开分析Word文件,或者发布到自己的Web页面,或者其他更多应用. 一个典型的WordXML结构可以是如下的样子: <?xml version="1.0"?><w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml&quo

软件工程第三周作业:微软必应词典案例分析

0x01 :微软必应词典案例分析 0x0104 :微软必应词典功能性BUG说明       0x010404 : BUG – 1 – 模块功能未实现 运行环境或平台 iOS 9.0.1 必应词典软件版本 版本3.5,版权所有@2014 Microsoft 软件测试BUG特征 [优先级1]应用程序模块功能未实现,包含整个模块不能正常运行 重现步骤 1. 打开必应词典软件进入设置中,选择跨软件查词设置,设置为打开和一直运行 2. 按照使用说明所说随意打开某一App(这里选择提醒事项) 3. 按使用说

Irrlicht游戏引擎初步分析与研究

转载出处:http://blog.csdn.net/hellphenix/archive/2008/03/19/2198226.aspx Irrlicht游戏引擎主要是由一个名叫Nikolaus Gebhardt奥地利人所设计,是sourceforge上的一个开源项目,也是著名的开源游戏引擎.Irrlicht是一个德国神话故事中的一种动物的名字,它能够发光和飞翔,可以在大部分的沼泽地附近发现它.单词"Irrlicht"是两个德国单词("irr"意思是疯狂的:而&qu

U-BOOT-2016.07移植 (第一篇) 初步分析

U-BOOT-2016.07移植 (第一篇) 初步分析 目录 U-BOOT-201607移植 第一篇 初步分析 目录 编译和移植环境 更新交叉编译工具 1 下载arm-linux-gcc 443 2 安装arm-linux-gcc 443 安装环境Ubuntu 910 下载u-boot-201607并解压 分析顶层Makefile 1 找出目标依赖关系 2 总结 初次编译u-boot 1 配置 2 编译 分析u-boot启动流程 1 分析startS 2 分析crt0S 3 总结 1. 编译和移

Cocos2d-x 3.1 Director ActionManger Scheduler初步分析

Director游戏主循环显示Node DisplayLinkDirector继承Director override了以下方法 virtual void mainLoop() override; virtual void setAnimationInterval(double value) override; virtual void startAnimation() override; virtual void stopAnimation() override; mainLoop()是游戏主循

mysql--error150错误原因初步分析

1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer.另外,你还必须确定两个字段是否一个为 SIGNED,而另一个又是UNSIGNED, 这两字段必须严格地一致匹配. 2, 你试图引用的其中一个外键没有建立起索引,或者不是一个primary key , 如果其中

微软必应词典案例分析

1.微软必应词典案例分析 1.1微软必应词典功能性BUG说明 声明:以下版本和运行环境如下: 运行环境:Android 5.0.2 LRX22G MIUI 8.0.1.0(LHMCNDG) 必应词典软件版本:5.2.2 1.1.1:BUG-1-悬浮窗错误弹出 软件测试BUG特征 与其他软件存在使用冲突 重现步骤 0.安装讯飞输入法1.打开必应词典->我的->设置->勾选悬浮窗口->打开微信->在对话框中输入讯飞输入法自带的emoji表情,例如破涕为笑 测试结果 弹出“本地暂无

glTF格式初步了解

glTF格式初步了解 最近看到Qt 3D的进展,偶然了解到了一种新的格式:glTF格式.这种格式据说比现有的3D格式更加符合OpenGL应用的需要,这引起了我的好奇,于是我在Qt 3D的外部链接中找到了有关glTF的相关链接. 上海萌梦信息科技有限公司(微博:http://weibo.com/qtdream)原创文章,首发地址:http://qtdream.com/topic/140.欢迎同行前来探讨. glTF的官网介绍在这里.它介绍了glTF的一些特性.发起者以及应用情景.官网中,介绍了gl

DirectUI的初步分析-转

DirectUI的初步分析(一) 最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是有距离的,不过其实现还是很有意思的.在写此小结的时候又发现国内一个程序员将这个代码部分移植到WINCE下的代码(见引用二),因为平台的差异性要完全开发一个WINCE下的实际代码还是需要时间的. 由于本人GUI开发做得少,工作中有关这方面的东西主要是提供思路和方法,学习DirectUI的主要目的是为了