/ / Editar HTML substituindo o texto - parsing, html-parsing, jsoup

Editando HTML substituindo a análise de texto, análise de html, jsoup

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 № 1

Se 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()));