1
votes

Remplacer la chaîne Java sur un modèle XML

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>";


2 commentaires

essayez de remplacer votre * dans uotmXML.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.


4 Réponses :


3
votes

Le modèle [0-9ITED+ fonctionnerait. Si la structure de votre entrée peut changer, vous pouvez utiliser un analyseur XML à la place.


0 commentaires

2
votes

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>");


0 commentaires

2
votes

J'utiliserais l'expression régulière ^ (\ d +) $ 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.


0 commentaires

1
votes

essayez de remplacer votre * dans uotmXML.replaceAll (" * ", ... par [^ <] + < / code>. Cela correspondra à tout jusqu'au caractère <


0 commentaires