Как эффективно удалить ненужные пробелы из файлов XML с помощью команды Linux или PHP? - PullRequest
1 голос
/ 13 января 2020

Я ищу эффективный способ уменьшить размер моих файлов XML с помощью команды Linux или PHP, удалив ненужные пробелы. Я не могу использовать сжатие, поскольку внешний процесс принимает только несжатые файлы.

Я ищу, например, что-то вроде sed -i 'xxx' file.xml. Даже две отдельные команды (одна для удаления пробелов и другая для удаления возврата каретки) в порядке.

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Если вы хотите использовать sed , вы можете сделать то же самое (обрезать линии) и объединить эти строки, как указано выше, с помощью этих двух команд:

sed -i -e '/^ */s///' -e '/ *$/s///' file.xml # remove leading blanks and trailing blanks
sed -i -e :a -e '$!N; s/\n/ /; ta' file.xml   # remove carriage return

Как видите, Я помещаю пробел между двумя строками, которые я конкатенирую, для случая, когда у вас есть текстовый узел на нескольких строках, чтобы избежать того, что последнее слово в строке будет объединено с первым словом на следующей строке. Чтобы удалить символы новой строки без вставки пробела, измените команду второго sed с s/\n/ / на s/\n//.

0 голосов
/ 13 января 2020

Просто обрежьте каждую строку. Это удалит пробелы в начале и конце.

$newFile = [];

$lines = file('./your.xml');
foreach($lines as $line) {
   $line = trim($line);
   if(!empty($line)) $newFile[] = $line;
}

file_put_contents('./yourClean.xml', join(PHP_EOL, $newFile));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...