Parsing 通过替换文本编辑HTML

Parsing 通过替换文本编辑HTML,parsing,html-parsing,jsoup,Parsing,Html Parsing,Jsoup,我试图将HTML文本从一种语言替换为另一种语言的对应文本,而不改变页面的标记和布局。对于解析HTML,我使用JSOUP Java库 doc.title(MTClient.translate(doc.title())); 这将占用页面的标题,并将其替换为MTClient.translate(要翻译的文本)接收的翻译文本字符串输出。这是工作的罚款和取代标题 但是,当我使用下面的代码对HTML页面的元素执行相同操作时: Elements Nodes = doc.children(); for(Ele

我试图将HTML文本从一种语言替换为另一种语言的对应文本,而不改变页面的标记和布局。对于解析HTML,我使用JSOUP Java库

doc.title(MTClient.translate(doc.title()));
这将占用页面的标题,并将其替换为MTClient.translate(要翻译的文本)接收的翻译文本字符串输出。这是工作的罚款和取代标题

但是,当我使用下面的代码对HTML页面的元素执行相同操作时:

Elements Nodes = doc.children();
for(Element node : Nodes){
    node.text(MTClient.translate(node.text()));
}
它删除了页面的整个布局,只将翻译后的文本简单地存储在页面中

我读了JSOUP的javadocs,上面说:

public Element text(String text)
设置此元素的文本。任何现有内容(文本或元素)都将被清除。

所有子元素都被删除

我还尝试了java中的HTMLPasser库,但它似乎也不支持这种类型的替换

如何替换文本


提前感谢您的帮助。

如果您只想修改文本,您应该获得和。TextNodes没有子元素,因此您不会替换它们

Elements nodes = doc.children();
for (Element node : nodes)
    for (TextNode textNode : node.textNodes())
        textNode.text(MTClient.translate(textNode.text()));

顺便说一句,高质量的机器翻译是一个非常困难的问题。除非你的词汇量非常有限(例如,一套表格),否则你不可能得到好的结果。你可能会考虑使用像谷歌翻译API这样的东西,即使它不是免费的。@ JaveRyBySurm谷歌翻译不会有帮助,因为我的语言翻译对有区域语言。谷歌不支持这些语言。我的目标是让维基百科可以使用印度的地区语言。。