我正在使用 XML Powertools 2.2 中的 NormalizeXml 函数和以下代码对我的 docx 文档进行规范化:
SimplifyMarkupSettings settings = new SimplifyMarkupSettings{
NormalizeXml = true,
};
我的目标是搜索和替换变量,但变量并不总是在同一个“运行属性”中,因此不会被替换。我也不想在 Office 中禁用校对。
运行我的程序后,docx 文件已损坏并在我尝试打开它时抱怨样式(并且 NormalizeXml 函数不起作用或完成):
根据架构,XML 数据无效。部分:/word/styles.xml,第 1 行,第 0 列
我正在使用 OpenXml 2.0,因为 OpenXml 2.5 需要 .Net 4.5
我也在使用 Office 2013。
当我使用 OpenXml 2.0 生产力工具时,它会出现如下错误:
错误节点类型:样式错误部分:/word/styles/xml 错误节点路径:/w:styles 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">
我想保持 Office 2007/2010/2013 之间的文档兼容。
在这个阶段,我正在考虑搜索这个“mc:Ignorable="w14 w15" 属性并进行空替换,但必须有更好的方法来做到这一点。
感谢您的任何建议。