如何在带有HTMLParser的标记之间获取值

时间:2011-06-28 18:24:12

标签: java html html-parsing

我正在使用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>标签?

提前致谢。

1 个答案:

答案 0 :(得分:1)

因为您已经知道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();
}