XML npp поиск и замена

XML npp поиск и замена

Имейте в виду, что я новичок в XML и npp.

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

Я выполнил большую часть преобразований в формат, но теперь столкнулся с проблемой.

Как теперь выглядит мой XML:

</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>

и что я хочу:

<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>

Проблема в замене </Value>двумя разными вещами в зависимости от того, находится ли это в строке отдельных символов. Вторая проблема, с которой я сталкиваюсь, заключается в замене частей строки и сохранении остальной части - когда часть, которую я хочу сохранить, имеет разное количество символов для каждой строки.

Любая помощь будет высоко оценена!

решение1

Заменяем </Valueна </DPR>, когда он существует один в строке:

Найти то, что:^ *</Value>

Заменить:</DPR>

Режим поиска: Регулярное выражение

После этого не должно быть никаких других экземпляров, </Value>кроме тех, которые идут вместе со строкой, поэтому их замена должна быть тривиальной. Но для полноты...

Замена [somestringhere]</Value-> [somestringhere]</description>, если он существует один в строке:

Найти то, что:^(<description>.+?)</Value>

Заменить:$1</description>

Режим поиска: Регулярное выражение

В приведенном выше ^примере обозначает начало строки, *означает пробел, который может существовать или отсутствовать, .+?означает любые символы до первого вхождения строки после этого (более подробную информацию о регулярных выражениях см. здесь), а $1в заменяемой строке будет заменена соответствующая часть, заключенная в скобки в исходных данных.

решение2

Проще всего использовать регулярные выражения в Perl:

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt

Связанный контент