當Office應用程序打開一個Office文檔的時候,首先會進行校驗,主要校驗的是該文檔的有效性和完整性。
當隨便將一個exe文檔的後綴改為docx時候,打開該文件肯定會報文件無效。對於一個Open XML文檔,如果想去校驗它,可以從如下幾個方面:
q 是不是ZIP壓縮包
q 必須的部件是否存在
q 關系是否完整
q 部件類型是否匹配
q 文件大小
q 宏和OLE對象
驗證的方式也很多,這裡給出最簡單的方法,使用Open XML SDk中的OpenXMLValidator對象。代碼清單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中看到驗證一個文檔很簡單,只需使用OpenXMLValidator的Validate方法即可。該方法需提供一個WordprocessingDocument對象作為參數,並返回一個ValidationErrorInfo對象的集合。ValidationErrorInfo對象會為我們提供出現錯誤的基本描述、類型、節點、路徑和部件。