通过替换文本来编辑HTML

时间:2014-06-28 15:22:17

标签: parsing html-parsing jsoup

我正在尝试将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,但它似乎也不支持这种替换。

如何替换文本??

提前感谢您的帮助。

1 个答案:

答案 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()));