/ / marcado cadenas específicas en Xml - java, xml

marcar cadenas específicas en Xml - java, xml

Me gusta marcar algunas cadenas en un documento xml.

Por ejemplo, tengo:

<p> I like to go to Florida </p>

Necesito etiquetar la cadena "go" y tener la salida como:

<p> I like to <something>go</something> to Florida</p>

¿Cuál es la mejor manera de hacer esto? Estoy usando Java. Necesito tratar el archivo XML como XML no como texto. Encontré algunas soluciones que tratan un archivo xml como un archivo de texto y usan string.replace, pero no creo que esas sean buenas soluciones.

Cualquier sugerencia es muy apreciada.

Gracias,

Respuestas

2 para la respuesta № 1

Intente una transformación XSLT 2.0 como esta:

<xsl:template match="@*|*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="text()">
<xsl:analyze-string regex="go">
<xsl:matching-substring>
<something><xsl:value-of select="."/></something>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>

Por supuesto, puedes extender la expresión regular,p.ej. regex = "go | come | walk | run"; Si solo quiere hacer coincidir palabras completas, puede usar tokenize () para dividirlo en palabras y procesar cada palabra por separado.