В настоящее время я работаю над коротким сценарием SED, который должен кодировать HTML-части XML-файла. Сценарий в настоящее время выглядит так:
sed.exe "/<messageData>/,/<\/messageData>/ {/<messageData>/b;/<\/messageData>/b; s/</\</g; s/>/\>/g; }" %1 >%2
Таким образом, по сути, замените все <и> на <и>, между тегами и.
Этот скрипт прекрасно работает с красивым напечатанным XML, то есть
<?xml version="1.0" encoding="ISO-8859-1"?>
<Messages>
<messageData>
<test>DATA</test>
</messageData>
</Messages>
выходит как
<?xml version="1.0" encoding="ISO-8859-1"?>
<Messages>
<messageData>
<test>DATA</test>
</messageData>
</Messages>
что мне и нужно. Моя проблема в том, что файлы, которые мне нужны, обрабатываются не очень хорошо, все в одной строке, например:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Messages><messageData><test>DATA</test></messageData></Messages>
И с этим форматом скрипт больше не работает.
Будет ли возможно изменить мой скрипт для работы с обоими форматами?
Обратите внимание, что я не могу повлиять на формат вывода, и что SED - это механизм сценариев, который будет использоваться.
Полагаю, я мог бы просто создать другой сценарий SED, который вставлял бы разрыв строки после каждого> в файле, и после этого запускал сценарий, который я создал сейчас. Однако я предполагаю, что это не будет очень эффективным с точки зрения производительности (два прохода над каждым файлом).
Есть предложения?
С уважением
Daniel