2013-04-09 52 views
1

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

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

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

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

这可能吗?

+0

这里的配置选项http://tidy.sourceforge.net/docs/quickref.html列表,使更换b与强大,但这些都是选择。我们可以重写其中的一些吗? – 2013-04-09 08:26:00

回答

0

你已经用'jdom'标记了这个,但是你的文档是一个DOM文档(不是JDOM)。

对于corse,如果它 JDOM,您可以使用相对简单的文档扫描替换Elements的内容。或者,您可以使用自定义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); 
    } 
    } 
}