PowerTools для Xml искажает документ при использовании NormalizeXML

Я нормализую свой документ 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 "и выполнении пустой замены, но должен быть лучший способ сделать это.

Спасибо за любой совет.


person Albertus    schedule 24.08.2013    source источник


Ответы (2)


Мое временное решение состоит в том, чтобы убедиться, что переменные (и любые символы, используемые для определения переменной, например: # name #) в документе, который необходимо заменить, имеют ТОЧНО один и тот же шрифт, чтобы «Свойства запуска» не нарушались. вверх.

Я также использую EditIx, чтобы убедиться, что переменная находится в ОДНОМ «Свойстве запуска», но это не идеально, поскольку я хочу, чтобы пользователи добавляли свои собственные переменные позже.

person Albertus    schedule 30.08.2013

Проверьте это сообщение Программно сохранить документ OpenXml как предыдущую версию (Word 2007)

Вам нужно будет изменить свой открытый код xml power tools.

Это сработало для меня.

Надеюсь это поможет.

person Mohamed Alikhan    schedule 10.01.2014