SharePoint изменяет содержимое HTM файлов библиотеки документов

HTM-файл с измененным содержимым

Недавно была поставлена задача загружать и обрабатывать в SharePoint структурированные данные в формате HTM. Поскольку парсинг на 100% доверить программе нельзя, ведь кем создаются исходные файлы мне неизвестно, потому загрузка и обработка были построены в полуавтоматическом режиме.

Суть процесса. В день поступает по почте порядка 20-30 сообщений в формате HTML. Это набор табличек и текста. На основе этих файлов необходимо в списке SharePointзаполнить соответствующие поля.

Для максимального удобства при минимальном количестве кода решил организовать такой механизм: для загрузки и хранения файлов использовать библиотеку документов с штатными функциями, в параметрах библиотеки были добавлены дополнительные поля, чтобы в них отражать историю обработки (поле Статус), записывать комментарии при обработке (поле Комментарии). Значение поля Статус после обработки менялось на «Обработано» или «Обработано с ошибками», по умолчанию – «Не обработано».

Разбор HTML-кода был реализован с помощью класса HTMLAgilityPack.

Описание процесса обработки:

Пользователь загружает в библиотеку документов файлы в формате HTM с расширением .HTM в библиотеку документов. По умолчанию при загрузке всем элементам устанавливается значение поля «Статус» - «Не обработано». После пользователь переходит на страницу обработки документов, нажимает на кнопку «Обработать», после чего загруженные документы обрабатываются и вытащенные значения записываются в другой список SharePoint.

 

Начало разработки

В начале разработки модуля обработки я не создавал дополнительного поля «Статус» в библиотеке документов, ограничившись базовым набором полей. И тогда веб-часть для парсинга работала, извлекая нужные значения. Но как только я добавил в библиотеку документов поле «Статус» и в веб-часть код для изменения поля «Статус», начались чудеса. При нажатии на кнопку «Обработать» ни один из файлов не был корректно обработан.

 

Несколько часов я просидел с отладчиком в поисках ошибки. Я видел, что нужные фрагменты текста просто не находятся. Тогда я открыл HTM файл из библиотеки документов и очень удивился – у него была нечитаемая кодировка. Перепробовав штук 10 кодировок, я так и не подобрал нужную. Изначально файлы были в кодировке UTF-8 и содержали русские символы, но в итоге файлы превращались в непонятный набор символов.

 

HTM-файл с измененным содержимым

HTM-файл с измененным содержимым

 

Путем довольно долгих экспериментов я обнаружил, что SharePoint изменяет содержимое HTM-файла при изменении одного из полей библиотеки документов. Если загрузить в библиотеку документов файл с расширением .txt (т.е. взять исходный HTM-файл и переименовать его в .txt), то такое поведение не повторяется, содержимое файла остается таким же, как его загрузили.

Потому для пользователя, который будет загружать документы, добавил дополнительное действие – изменение расширения файлов перед загрузкой. Для чего создал файл с расширением .cmd, в котором прописана всего одна команда:

ren c:\Docs\*.* *.txt

 

Пользователь должен был перед загрузкой документов сохранить все файлы в директории C:\Docs и запустить этот командный файл.

 


Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment






MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика