Я нормализую свой документ docx с помощью функции NormalizeXml из XML Powertools 2.2 с помощью этого кода:
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 Описание: Недопустимый атрибут Ignorable - значение '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 "и выполнении пустой замены, но должен быть лучший способ сделать это.
Спасибо за любой совет.