Как получить значение между тегом с помощью HTMLParser - PullRequest
0 голосов
/ 28 июня 2011

Я использую 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 Ответ

1 голос
/ 29 июня 2011

Поскольку вы уже знаете, что 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();
    }
  }
};

См. Javadocs для NodeVisitor для описания о настройке метода visitTag.

Если вас интересуют только теги с конечными тегами, вы можете увидеть, является ли он экземпляром CompositeTag , в противном случае тег не имеет конечного тега (<tag/>). Затем вызовите метод getStringText () , о котором я упоминал выше.

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