Padronizar XML

5 respostas
F

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?

5 Respostas

dicaminha
final Pattern p = Pattern.compile("(?s)(?<=<).<em>?(?=/?>|\s</em>\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);
F

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

F

Alguem consegue me dar uma luz?

F

Alguem?

M

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.

Criado 20 de dezembro de 2017
Ultima resposta 21 de dez. de 2017
Respostas 5
Participantes 3