Bonjour,

Admettons que j'ai un flux XML avec des caractères spéciaux:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<aaa&>val a</aaa&>
<bbb>val b      &</bbb>

Je voudrais remplacer le & dans toutes les valeurs de noeud mais dans aucune balise.

Actuellement j'ai essayé ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
String text = "&<balise & aa><a attr=\"3\">   &dfff&dfgdfg  &</a &></balise>aaa&aaa <ba&lise2>blabla2</ba&lise2>";
 
String startWord = "[^(<[a-zA-Z0-9]*\\s)]";
		String endWord = "[^(\\s[a-zA-Z0-9]*>)]";
		String regex = "(?="+startWord+"|^)(\\&)(?="+endWord+"|$)";
		String formattedText = text.replaceAll(regex, "[ET]");
		System.out.println("Regex : " + regex);
		System.out.println(" > " + formattedText);
Après transformation, ma console m'affiche ce résultat:

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
> [ET]<balise & aa><a attr="3">   [ET]dfff[ET]dfgdfg  [ET]</a &></balise>aaa[ET]aaa <ba[ET]lise2>blabla2</ba[ET]lise2>

<ba[ET]lise2> --> c'est pas bon

J'ai beau me creuser la tête, je n'arrive désesperément pas à trouver la bonne expression pour mon besoin.. Est ce que l'un d'entre vous aurait une idée?

Merci.
Motin