我正在使用HTMLParser(org.htmlparser)解析HTML。我用它来访问标签并获得标签属性,如下所示:

NodeVisitor linkvisitor = new NodeVisitor() {
    public void visitTag(Tag tag) {
        if ("script".equalsIgnoreCase(name)) {
            String srcValue = tag.getAttribute("src");
            // do stuff
        }
    }
        // How to get value instead of tag?
}


但是现在我需要在标签之间得到值,例如<script>标签?

提前致谢。

最佳答案

因为您已经知道Tag是脚本标记,所以应该可以将其强制转换为ScriptTag。然后,您应该可以使用CompositeTag.getStringText()

NodeVisitor linkvisitor = new NodeVisitor() {
  public void visitTag(Tag tag) {
    if (tag.getTagName().equals("SCRIPT")) {
      ScriptTag script = (ScriptTag)tag;
      String srcValue = script.getAttribute("src");
      String text = script.getStringText();
    }
  }
};


有关设置visitTag方法的说明,请参见Javadocs for NodeVisitor

如果仅关注带有结束标记的标记,则可以查看它是否是CompositeTag的实例,否则该标记没有结束标记(<tag/>)。然后调用上面提到的getStringText()方法。

if(tag instanceof CompositeTag) {
  CompositeTag cTag = (CompositeTag)tag;
  String text = cTag.getStringText();
}

09-27 00:29
查看更多