我正在尝试将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中尝试过HTMLPARSER lib,但它似乎也不支持这种替换。
如何替换文本??
提前感谢您的帮助。
答案 0 :(得分:0)
如果您只想修改文字,则应该获得Element's textNodes()和set their text。 TextNodes没有子元素,因此您无法替换它们。
Elements nodes = doc.children();
for (Element node : nodes)
for (TextNode textNode : node.textNodes())
textNode.text(MTClient.translate(textNode.text()));