使用JTidy从html中删除所需的标记

时间:2013-04-09 08:17:21

标签: java dom html-parsing jtidy

我在解析HTML时使用JTidy和xpath,但是暂时解析文本会让我有点麻烦,因为它可能包含b标签,所以我不想循环它的子节点但只是删除'b '加载html后的标签。

如果从DOM文档中删除标记。

Document doc = tidy.parseDOM(url.openStream(), System.out);

例如伪代码 - doc.removeTag('<b>');

有可能吗?

1 个答案:

答案 0 :(得分:0)

您已将此标记为“jdom”,但您的文档是DOM文档(不是JDOM)。

如果它是 JDOM,你可以使用相对简单的文档扫描替换元素及其内容。或者,您可以使用自定义SAXHandler来跳过首先添加元素。

使用JDOM,您可以执行以下操作:

for (Iterator <Content> it = document.getDescendants(); it.hasNext(); ) {
  Content c = it.next();
  if ((c instanceof Element) && "b".equals(((Element)c).getName())) {
    Element e = (Element)c;
    it.remove();
    for (Content k : e.getContent()) {
      k.detach();
      it.add(k);
    }
  }
}