Какой самый простой способ поиска и замены в текстовых файлах в кодировке UTF-16? - PullRequest
0 голосов
/ 27 августа 2009

Я пытаюсь обновить серию XML-файлов, изменяя имена, на которые они ссылаются. У меня есть таблица имен, которые изменились, столбец для текущего имени и столбец для имени для замены.

Я искал способы поиска и замены скриптов и нашел sed. Это был хороший выбор, пока я не попробовал свою первую попытку. При проверке файла я обнаружил несколько нераспознанных символов между каждым возвратом каретки и переводом строки. Я провел поиск и обнаружил, что есть проблемы с sed, используемым в файлах utf-16.

Это текстовые файлы, которые я ищу, хотя есть копии, хранящиеся в таблице SQL Server в столбце с типом xml. При обновлении или заполнении базы данных поля всегда устанавливаются как ColumnName = N'xmltext '.

Меня интересует, как можно обновить эти поля, хотя основной вопрос - как лучше всего обновить текстовые файлы.

Я использую расширенные регулярные выражения, мой поиск для ([>\\.])OldName([<\\.]), и я заменяю его на \1NewName\2

1 Ответ

0 голосов
/ 28 августа 2009

Скорее всего, вам придется загрузить файлы XML в реальный синтаксический анализатор XML, а затем использовать операторы XPath и / или XQuery, чтобы найти элементы, содержащие искомое значение имени. После того, как вы узнаете конкретные элементы, вы можете просто назначить им новое значение напрямую, а затем повторно сохранить XML-файл обратно в файл.

Что касается SQL Server, его тип данных XML изначально поддерживает операторы XPath и XQuery для поиска и обновления данных элементов. Поэтому вы, вероятно, можете использовать одни и те же операторы XPath / XQuery в обеих ситуациях.

...