2014-03-31 34 views
1

標籤內的原子值我是新來的HtmlUnit,我不知道怎麼進去的文字[...]如何檢索的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。

回答

1

最好只使用XPath,而不要將它與HTMLUnit方法混合使用。這樣的事情應該工作,讓你第一信息行:

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

爲了獲取你應遵循同樣的方法將其它信息線,但改變XPath字符串。

請記住,您應該始終通過打印page.asXml()的輸出來查看代碼來調試頁面。如果你使用真正的瀏覽器,你實際上看不到像HTMLUnit所看到的一樣。如果頁面執行JavaScript,您可能會遇到差異。

+0

我通過以下代碼找到了這個無序列表塊: List ls =(List )page.getByXPath(「// div [@ role ='main']/div [類= '內容的主']/UL [@數據角色= '列表視圖']「); 列表 dn = ls.get(0).getChildNodes(); //獲取第一條信息線, HtmlElement x =(HtmlElement)dn.get(0).getByXPath(「// li [@ data-role ='list-divider']」); System.out.println(x.asText()); 但是,這種方式沒有奏效... [查看此鏈接以獲取正確的視圖:http://1drv.ms/1fJiZnS] –