Java RegEx para reemplazar un nombre de etiqueta XML

Estoy tratando de reemplazar el MessageParam dentro de la etiqueta XML con XXYY1 ...

The MessageParam has requested to travel <BR/>From <MessageParam name="0" desc="city code"/> to <MessageParam name="1" desc="city code"/> on <MessageParam name="2" desc="date"/> at <MessageParam name="3" desc="time"/>.

Espero que la salida sea

The MessageParam has requested to travel <BR/>From <XXYY1 name="0" desc="city code"/> to <XXYY2 name="1" desc="city code"/> on <XXYY3 name="2" desc="date"/> at <XXYY4 name="3" desc="time"/>.

Aqui esta mi codigo

private void ProcessString()
{
    String text = "The Traveler has requested to travel <BR/>From <MessageParam name=\"0\" desc=\"city code\"/> to <MessageParam name=\"1\" desc=\"city code\"/> on <MessageParam name=\"2\" desc=\"date\"/> at <MessageParam name=\"3\" desc=\"time\"/>.";
    int Counter = 0;
    StringBuffer outString = new StringBuffer();
    Pattern pattern = Pattern.compile("(<MessageParam.*?>)");
    Matcher matcher = pattern.matcher(text);

    while (matcher.find())
    {
        Counter++;
        String sReplacer = new StringBuffer("XXYY").append(Counter).toString();
        matcher.appendReplacement(outString, sReplacer);
    }
    matcher.appendTail(outString);
    System.out.println(outString.toString());
  }

La salida que obtengo es

 The MessageParam has requested to travel <BR/> From XXYY1 to XXYY2 on XXYY3 at XXYY4.

Estoy bastante seguro de que mi expresión regular no es correcta. Como no soy bueno con la expresión regular, no puedo entender qué está saliendo mal.

Respuesta 1

La expresión regular debería ser (?<=<)MessageParam

Eso resolvería tu problema

Respuesta: 2

No haría tal cosa con una expresión regular.

Prefiero analizar el XML de origen y asignar valores de destino en un XML de salida utilizando un motor de plantillas como Velocity.

Mi segunda opción sería una transformación XSL-T de un XML a otro.

Respuesta: 3

Tengo una tabla "clase" que está vinculada a las tablas "estudiante" y "profesores". Una "clase" está vinculada a varios estudiantes y maestros a través de una relación clave extranjera. Cuando uso asociaciones de hibernación y ...

En la carpeta / res / raw / de mi aplicación, tengo: file1.ogg file2.ogg ... fileN.ogg En una base de datos local, tengo las referencias a los nombres de archivo, es decir, file1 file2 ... fileN. Dada una de esas cadenas, ...

¿La biblioteca java.time proporciona una forma consolidada de analizar toda la Especificación de duración ISO-8601? La referencia de Alexa Slot Type para la duración enumera algunas cadenas de ejemplo que se pueden esperar al usar ...

Soy principiante y me mantengo en manos. Necesito probar este método: escribir / leer en / desde el archivo. ¿Puedes obtener consejos? ¿Qué mejor puedo hacer esto, usar solo prueba junit o mejor EasyMock? Que puedes ...