Как получить атомарные значения внутри тегов в HTMLUnit

1

Я новичок в HtmlUnit, и я не знаю, как получить текст внутри [...]

Часть моего html файла:

<ul ......somethin....>
<li data-role="list-divider" role="heading" style="font-size:16px;" class="ui-bar-f">
  INFORMATION_LINE_1
</li>

<li data-theme="d" class="ui-li ui-btn-icon-right ui-btn-up-d ui-odd-match-column ">
  <div class="ui-btn-inner ui-li">
    <div class="">
      <div class="ui-btn-text">
        <a href="/x/cxntay/13113/ndzvsssl/g1" class=" ui-link-inherit ui-link-hover">
          <h3 class="ui-li-heading">
            <span class="xheader">INFORMATION_LINE_2</span>
            <span class="label live">INFORMATION_LINE_3</span>
          </h3>
          <div class="ui-live-scores">
            <span class="team1-scores">
              <span class="ui-team-name">INFORMATION_LINE_4</span>
              <span style="font-weight:bold">INFORMATION_LINE_5</span>
            </span>
            <span>INFORMATION_LINE_6</span>
          </div>
        </a>
      </div>
    </div>
  </div>
</li>
</ul>

Теперь я хочу получить "INFORMATION_LINE_X" (1,2... 6) между этими тегами.

Вот что я пробовал:

List<HtmlUnorderedList> ls = (List<HtmlUnorderedList>) page.getByXPath("/ul");
List<DomNode> dls = ls.get(0).getChildNodes();
System.out.println(dls.get(0).getFirstByXPath("//li[@data-role='list-divider']/text()");

Я просто попытался получить INFORMATION_LINE_1 Но он напечатал null. Мне нужно получить все INFORMATION_LINES.

Теги:
htmlunit

1 ответ

1
Лучший ответ

Лучше использовать только XPath, а не смешивать его с методами HTMLUnit. Что-то вроде этого должно работать, чтобы вы получили первую информационную строку:

HtmlElement e = page.getFirstByXPath("//li[@data-role='list-divider']");
System.out.println(e.asText());

Чтобы получить другие информационные строки, вы должны следовать одному и тому же подходу, но изменить строку XPath.

Помните, что вы всегда должны отлаживать страницу, просматривая код, распечатывая вывод page.asXml(). Если вы используете настоящий браузер, вы на самом деле не видите точно так же, как видит HTMLUnit. Вы можете споткнуться о различиях, особенно если страница выполняет JavaScript.

  • 0
    Я разместил этот неупорядоченный список по следующему коду: List <HtmlUnorderedList> ls = (List <HtmlUnorderedList>) page.getByXPath ("// div [@ role = 'main'] / div [@ class = 'content- первичный '] / мкло [@ данные-роль =' списка следует '] "); List <DomNode> dn = ls.get (0) .getChildNodes (); // Чтобы получить первую информационную строку, HtmlElement x = (HtmlElement) dn.get (0) .getByXPath ("// li [@ data-role = 'list-divider']"); System.out.println (x.asText ()); Но этот способ не сработал ... [см. Эту ссылку для правильного просмотра: 1drv.ms/1fJiZnS ]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню