Estou tentando substituir o texto HTML de um idioma pelo texto correspondente em outro idioma, sem alterar a marcação e o layout da página. Para analisar HTML, estou usando a biblioteca JSOUP Java.
doc.title(MTClient.translate(doc.title()));
Isso ocuparia o título da página e o substituiria pela saída de string de texto traduzida recebida por MTClient.translate (Texto a ser traduzido). Isso está funcionando bem e substituindo o título.
Mas quando estou fazendo o mesmo em Elementos da página HTML, usando o código abaixo:
Elements Nodes = doc.children();
for(Element node : Nodes){
node.text(MTClient.translate(node.text()));
}
Ele está removendo todo o layout da página e armazenando apenas o texto traduzido simplesmente na página.
Eu li o javadocs do JSOUP, que diz:
public Element text(String text)
Defina o texto deste elemento. Qualquer conteúdo existente (texto ou elementos) será apagado.
E todos os subelementos são removidos.
Também tentei HTMLPARSER lib em java, mas também não parece oferecer suporte a esse tipo de substituição.
Como faço para substituir o texto ??
Obrigado pela ajuda, antecipadamente.
Respostas:
0 para resposta № 1Se você deseja apenas modificar o texto, deve obter o TextNodes do elemento () e definir seu texto. TextNodes não tem elementos filho, então você não irá substituí-los.
Elements nodes = doc.children();
for (Element node : nodes)
for (TextNode textNode : node.textNodes())
textNode.text(MTClient.translate(textNode.text()));