java - 使用 JTidy 从 html 中删除所需的标签

标签 java dom html-parsing jtidy

我正在使用 JTidy 和 xpath 来解析 HTML,但目前解析文本给我带来了一些麻烦,因为它可能包含 b 标签,所以我不想循环它的子节点,而只是删除 'b ' 加载 html 后的标签。

如何从 DOM 文档中删除标签。

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

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

可能吗?

最佳答案

您已经用“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);
    }
  }
}   

关于java - 使用 JTidy 从 html 中删除所需的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896744/

相关文章:

java - 将 ResponseEntity<?> 转换为流

jquery - 如何在jquery中选择最近添加的元素?

xml - 使用 XPath 选择下一个链接

java - 通过 ObjectReference#invokeMethod 调用方法后出现 InvalidStackFrameException

java - Centos 7,System.nanoTime 比 Windows 慢 400 倍

javascript - mootools 更改元素内联 css

Javascript getElementsByTagName 不返回结果

python - 使用 bs4 查找包含文本的 html 标签 (h2)

c# - 什么是解析?

java - crontab 更改 jar 执行时的字符编码