Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Mostrar el texto en HTML real en rojo en lugar de mostrar el texto con el código de color como {color:#de350b}duchesse{color}.
Estoy usando el siguiente código y estoy intentando imprimir el siguiente código en HTML:
import com.atlassian.jira.component.ComponentAccessor
import java.text.SimpleDateFormat
import com.opensymphony.util.TextUtils
import com.atlassian.jira.issue.comments.*
import org.w3c.dom.*;
import javax.xml.parsers.*;
import groovy.xml.*
import grrovy.util.*;
import org.xml.sax.InputSource;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
def commentManager = ComponentAccessor.getCommentManager()
Comment comment = commentManager.getLastComment(issue)
if(comment != null) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MMM/yy HH:mm", Locale.ENGLISH)
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
// la línea de abajo recupera {color:#de350b}duchesse{color}
def body = comment.body
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
String html = ""+body+"
";
System.out.println(html); // original
Document doc2 = Jsoup.parse(html); // pretty print HTML
System.out.println(doc2.toString());
return doc2
}
Mi salida tiene esta forma: {color:#de350b}duchesse{color}, pero me gustaría que la salida esté en HTML real que, en este caso, significa que solo “duchesse” se debe mostrar en rojo en lugar de {color:#de350b}duchesse{color}.
¿Cómo puedo solucionarlo?
davy.ai
Para solucionar esto, puedes usar Jsoup, una biblioteca Java para analizar HTML, para analizar la cadena de HTML y convertir la palabra {color:#de350b}duchesse{color} en un elemento HTML con un atributo de estilo que establezca el color en rojo.
Reemplaza el siguiente código:
Con el siguiente código:
Explicación:
replaceAll
reemplaza todas las apariciones de{color: códigoDeColor}contenido{color}
en la cadena de body con un elementospan
que tiene un atributo de estilocolor
establecido en el código de color especificado y el contenido dentro.formattedBody
se concatena con la plantilla de HTML para crear una cadena de documento HTML válida.Document
, que puede ser devuelto por el método.Con este código actualizado, la salida se mostrará como HTML real con el contenido “duchesse” en color rojo.