java - org.htmlparser.Parser, нужно получить что-то между h3 - PullRequest
0 голосов
/ 22 марта 2012

htmlparser.Parser, У меня есть фрагмент HTML (см. Ниже), и мне нужно, чтобы получить содержание в моем файле куча этих контейнерных элементов с уникальными идентификаторами. Я могу получить div и их внутренний HTML просто отлично. Я не могу понять узнать, что между тегами H3

этот фрагмент кода работает для div, но не для h3: если находит h3 с правильным идентификатором, я просто не могу понять, как получить innerHTML или что между тегами.

спасибо за любую помощь

    parser = new Parser();
    parser.setInputHTML(inHTML);
    parser.setEncoding("UTF-8");
    lstNodes = parser.extractAllNodesThatMatch(  new AndFilter(new TagNameFilter("h3"),
                                                  new HasAttributeFilter("id", "h3_"+num)));

Это находит, но не возвращает данные между h3

 <div class="container" id="container_2">
      <h3 id="h3_2">Adding a few</h3>       
      <div class="maindiv" id="div_2">
          ...new articles in here jus tto flesh it out.
      </div><!--end of div_2-->
  </div>

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Ты почти у цели.Вы можете привести его к HeadingTag вручную и использовать getStringText() для получения текста между тегами.

NodeList nodes = parser.extractAllNodesThatMatch(new AndFilter(new TagNameFilter("h3"),
    new HasAttributeFilter("id", "h3_"+num)));
SimpleNodeIterator nodeIterator = nodes.elements();
while (nodeIterator.hasMoreNodes()) {
    Node node = nodeIterator.nextNode();
    HeadingTag tag = (HeadingTag)node;
    System.out.println(tag.getStringText());
}
1 голос
/ 29 марта 2012

я закончил тем, что создал свой собственный тег

class H3Tag extends CompositeTag
...