Приведенные выше решения работают, если вы сжимаете все пустое пространство в документе XML.Другими быстрыми вариантами являются JDOM (используя Format.getCompactFormat ()) и dom4j (используя OutputFormat.createCompactFormat ()) при выводе документа XML.
Однако у меня было уникальное требование сохранить пустое пространство, содержащееся в текстовом значении элемента, и эти решения не работали так, как мне нужно.Все, что мне было нужно, это удалить форматирование pretty-print, добавленное в XML-документ.
Решение, которое я нашел, может быть объяснено в следующем процессе 3-step / regex ... радипонимания алгоритма решения.
String regex, updatedXml;
// 1. remove all white space preceding a begin element tag:
regex = "[\\n\\s]+(\\<[^/])";
updatedXml = originalXmlStr.replaceAll( regex, "$1" );
// 2. remove all white space following an end element tag:
regex = "(\\</[a-zA-Z0-9-_\\.:]+\\>)[\\s]+";
updatedXml = updatedXml.replaceAll( regex, "$1" );
// 3. remove all white space following an empty element tag
// (<some-element xmlns:attr1="some-value".... />):
regex = "(/\\>)[\\s]+";
updatedXml = updatedXml.replaceAll( regex, "$1" );
ПРИМЕЧАНИЕ. Псевдокод находится на языке Java ... $ 1 - это строка замены, которая является первой группой захвата.
Это просто удалит пробелы, используемые при добавлении формата pretty-print в XML-документ, но сохранит все остальные пробелы, когда они являются частью текстового значения элемента.