2013-08-24 48 views
1

當我正火使用從XML的NormalizeXml功能我DOCX文檔POWERTOOLS 2.2與此代碼:PowerTools的FOR XML會損壞文檔使用NormalizeXML

SimplifyMarkupSettings settings = new SimplifyMarkupSettings{ 
      NormalizeXml = true, 
}; 

我的目標是搜索和替換變量,但變量並不總是在相同的「運行屬性」中,因此不會被替換。我也不想禁用Office中的校對。

運行我的程序的docx文件已損壞,抱怨的風格,當我嘗試打開它(和NormalizeXml功能沒有工作或完成)後:根據架構

XML數據是無效的。 部分:/word/styles.xml,Line 1,列0

我使用的OpenXML 2.0以來的OpenXML 2.5需要.NET 4.5

我也使用Office 2013

當我使用處理OpenXML 2.0生產力工具它拿起像這樣的錯誤:

錯誤節點類型:樣式 錯誤部分:/字/風格/ XML 錯誤節點路徑:/ W:風格1 說明:可忽略的屬性無效 - 值'w14 w15'包含未定義的無效前綴。

這是我所看到的,當我打開styles.xml:

<?xml version="1.0" encoding="utf-8"?><w:styles mc:Ignorable="w14 w15" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape"> 

我想保持辦公室2007/2010/2013之間兼容的文件。

在這個階段,我正在考慮尋找這個「MC:可忽略=」 W14 W15" 屬性,做一個空的更換,但必須有一個更好的方式來做到這一點

感謝您的任何意見

回答

0

我的臨時解決方案是確保需要替換的文檔中的變量(以及用於檢測變量的任何字符,例如:#name#)具有完全相同的字體,因此「運行屬性」不會打破

我也使用EditIx來確保變量是在一個「運行屬性」,但這並不理想我希望用戶稍後添加他們自己的變量。