J'ai la chaîne XML suivante:
public class HelloWorld { public static void main(String[] args) { String XML = "<MESSAGEID>5435646578</MESSAGEID>"; String newStr = XML.replaceAll("<MESSAGEID>*</MESSAGEID>", "<MESSAGEID></MESSAGEID>"); System.out.println(newStr); } }
Le nombre dans la chaîne xml ne cesse de changer, donc je veux faire un remplacement de chaîne et je veux transformer le XML en
<TEST><MESSAGEID></MESSAGEID></TEST>
Je cherche à faire quelque chose comme ça mais je ne sais pas comment obtenir le modèle pour le premier argument dans la méthode replaceAll.
String XML = "<TEST><MESSAGEID>5435646578</MESSAGEID></TEST>";
4 Réponses :
Le modèle
fonctionnerait. Si la structure de votre entrée peut changer, vous pouvez utiliser un analyseur XML à la place.
J'utiliserais le modèle alphanumérique à moins que vous ne soyez absolument certain que ce ne sera que numérique:
// alphanumeric String newStr = uotmXML.replaceAll("<MESSAGEID>\w+</MESSAGEID>", "<MESSAGEID></MESSAGEID>"); // digits String newStr = uotmXML.replaceAll("<MESSAGEID>\d+</MESSAGEID>", "<MESSAGEID></MESSAGEID>");
J'utiliserais l'expression régulière ^
pour trouver les chiffres (dans le groupe 1), si vous êtes assuré que le format ne changera pas. Sinon, j'utiliserais une bibliothèque XML appropriée comme JAXB ou Jackson.
essayez de remplacer votre *
dans uotmXML.replaceAll ("
par [^ <] + < / code>. Cela correspondra à tout jusqu'au caractère
<
essayez de remplacer votre
*
dansuotmXML.replaceAll (" * "
par[^ <] +
. Cela correspondra tout jusqu'au caractère<
Cela a fonctionné pour moi. Si vous souhaitez l'ajouter comme réponse plutôt que comme commentaire, j'accepterai cette réponse.