Estoy tratando de reemplazar el texto HTML de un idioma al texto correspondiente en otro idioma, sin cambiar el marcado y el diseño de la página. Para analizar HTML, estoy usando la biblioteca JSOUP Java.
doc.title(MTClient.translate(doc.title()));
Esto tomaría el título de la página y lo reemplazaría con la salida de cadena de texto traducida recibida por MTClient.translate (Texto a traducir). Esto funciona bien y reemplaza el título.
Pero cuando estoy haciendo lo mismo en Elementos de la página HTML, usando el siguiente código:
Elements Nodes = doc.children();
for(Element node : Nodes){
node.text(MTClient.translate(node.text()));
}
Está eliminando todo el diseño de la página y solo almacena el texto traducido simplemente en la página.
Leí los javadocs de JSOUP, que dice:
public Element text(String text)
Establecer el texto de este elemento. Cualquier contenido existente (texto o elementos) será borrado.
Y se eliminan todos los subelementos.
También probé HTMLPARSER lib en java, pero tampoco parece admitir este tipo de reemplazo.
¿Cómo reemplazo el texto?
Gracias por la ayuda de antemano.
Respuestas
0 para la respuesta № 1Si solo desea modificar el texto, debe obtener el Elementos de texto del elemento () y establecer su texto. Los TextNodes no tienen elementos secundarios, por lo que no los reemplazará.
Elements nodes = doc.children();
for (Element node : nodes)
for (TextNode textNode : node.textNodes())
textNode.text(MTClient.translate(textNode.text()));