Chinaunix首页 | 论坛 | 博客
  • 博客访问: 990042
  • 博文数量: 78
  • 博客积分: 1473
  • 博客等级: 上尉
  • 技术积分: 2124
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-23 12:50
文章分类

全部博文(78)

文章存档

2016年(6)

2015年(2)

2014年(13)

2013年(4)

2012年(53)

分类: 嵌入式

2012-06-24 16:22:46

 

Office应用程序打开一个Office文档时候,首先会进行校验,主要校验是该文档有效性和完整性。

当随便将一个exe文档后缀改为docx时候,打开该文件肯定会报文件无效。对于一个Open XML文档,如果想去校验它,可以从如下几个方面:

q  是不是ZIP压缩包

q  必须部件是否存在

q  关系是否完整

q  部件类型是否匹配

q  文件大小

q  宏和OLE对象

验证方式也很多,这里给出最简单方法,使用Open XML SDkOpenXmlValidator对象。代码清单14-24是如何验证一个Word文档有效性方法。

代码清单14-24  验证文档有效性

public static void ValidateWordDocument(string filepath)

{

    try

    {

        OpenXmlValidator validator = new OpenXmlValidator();

        int count = 0;

        foreach (ValidationErrorInfo error in

            validator.Validate(

                WordprocessingDocument.Open(filepath, true)))

        {

            count++;

            Console.WriteLine("Error " + count);

            Console.WriteLine("Description: " + error.Description);

            Console.WriteLine("ErrorType: " + error.ErrorType);

            Console.WriteLine("Node: " + error.Node);

            Console.WriteLine("Path: " + error.Path.XPath);

            Console.WriteLine("Part: " + error.Part.Uri);

            Console.WriteLine("-------------------------------------------");

        }

        Console.ReadKey();

    }

    catch (Exception ex)

    {

        Console.WriteLine(ex.Message);

    }

}

在代码清单14-24中看到验证一个文档很简单,只需使用OpenXmlValidatorValidate方法即可。该方法需提供一个WordprocessingDocument对象作为参数,并返回一个ValidationErrorInfo对象集合。ValidationErrorInfo对象会为们提供出现错误基本描述、类型、节点、路径和部件。

--------------注:本文部分内容改编自《.NET 安全揭秘》

阅读(1777) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~