Padronizar XML

Bom dia.
Tenho o seguinte trecho em um XML:

<mod>55</mod><serie>0</serie><nNF>1111</nN F><dhEmi>2017-12-20T10:11:53-02:00</dhEmi>

Preciso remover o espaço existente na tag nNF, que no exemplo acima está desta forma </nN F>
Não posso usar replaceAll(" ", “”) porque ai modificaria o restante do xml e ai o mesmo fica inválido.

Como posso resolver essa questão?

final Pattern p = Pattern.compile("(?s)(?<=<).?(?=/?>|\s\w+\s*=)");
Matcher m = p.matcher(data); // seu XML
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().replace(" ", “”));
}
m.appendTail(sb);
data = sb.toString();
System.out.println(data);

Usei o pattern acima com a string que passei também e não deu nenhum match.

Alguem consegue me dar uma luz?

Alguem?

Boa tarde @fchansen!

Seguindo a linha de raciocínio do @dicaminha , você poderia utilizar a seguinte Regex (entre as aspas duplas): “</?([a-zA-Z ]+)>”.

Esta Regex recupera TODAS as TAGs de abertura e fechamento do seu XML que contenham letras minúsculas, maiúsculas e ESPAÇOS.

Assim você pode efetuar o seu Replace nos Matches da Regex.

O site RegExr é ótimo para realizar estes testes.
Coloque a Regex que passei em “Expression”, e este seu XML em “Text”.

Espero tê-lo ajudado.