2013-04-03 1 views
0

У меня есть HTML-страница, с которой я пытаюсь вычислить значение Logname. Я могу получить весь текст li, застрявший вместе как одна строка, но не совсем то, что я хочу. Я хочу получить только вторую часть имени li после </span>. Любой способ легко получить это? С тем, что у меня есть, я мог бы сделать раскол и получить то, что хочу, но похоже, что должен быть более элегантный способ?Вложенные значения Jsoup внутри элемента списка

Текущий код

Elements detail = mHtml.select ("div.alpha-first"); 


     for (Element items : detail) 
     { 
      Log.d (TAG, " label text " + items.text()); 

      detail. 

      if (items.text().equals ("ACID")) 
      { 
       Log.d (TAG, " got ACID "); 
      } 

     } 

HTML

<html> 
<title>emp id chart</title> 
<body> 
<div class="alpha-first"> 
     <ul class="account-detail"> 
     <li><span class="label">ID</span>42</li> 
     <li><span class="label">Logname</span>George</li> 
     <li><span class="label">Surname</span>Glass</li> 
     <li><span class="label">ACID</span>15</li> 
     <li><span class="label">Dept</span>101348</li> 
     <li><span class="label">Empclass</span>Echo</li> 
     </ul> 
     <p class="last-swipe">3 Apr 9:53</p><br> </div> 
    <div class="detail-last-loc"> 
     <p style="font-size: 8pt;">Current status</p> 
     <p class="current-location">Bldg #23 South Lot</p> 
     <p> current time 10:43 <br /></p> 
     <div class="detail-extra"> 
     <p><a href="/empswipe/history/151034842">More</a> | <a href="/empswipe/history/151034842/3">3 Day History</a></p> 
     </div> 
</div> 
</body> 
</html> 

ответ

2

Из того, что я понял, учитывая ваш пример, вы хотели бы получить от: <li><span class="label">Logname</span>George</li>, значение: George.

Вам действительно не нужно перебирать, вы можете получить его напрямую. Я бы не зашел так далеко, чтобы назвать этот код элегантным, но все же здесь:

//Select the <span> element the text "Logname" 
    Elements select = mHtml.select(".account-detail span.label:contains(Logname)"); 

    //Get the element itself, since the select returns a list 
    Element lognameSpan = select.get(0); 

    //Get the <li> parent of the <span> 
    Element parent = lognameSpan.parent(); 

    //Access the text node of the <li> directly since there is only one 
    String logname = parent.textNodes().get(0).text(); 

Надеюсь, это поможет.

+0

Спасибо, это именно то, что я хотел сделать. Мой примерный код был немного запутанным, поскольку я разветвлялся по ACID, а не по имени Logname. – wufoo