2012-09-07 106 views
4

我是jsoup的新手,對html標記有點麻煩。我需要基於它們包含的文本來獲取選擇列表選項的值屬性。例如:Jsoup訪問HTML選擇標記

'<select id="list"> 
<option value="0">First value</option> 
<option value="1">Second value</option> 
<option value="2">Third value</option> 
</select>' 

你有一個想法,我怎麼能告訴jsoup返回值「1」,如果它得到了「二值」作爲搜索參數?

回答

2

試試這個代碼:

String searchValue = "Second value"; 
Elements options = doc.select("#list > option"); 
String value = ""; 
for (Element option : options) { 
    String text = option.text(); 
    if (text.equals(searchValue)){ 
     value = option.attr("value"); 
    } 
} 

希望它能幫助!

+0

感謝您的回覆,但我沒有得到任何抱歉... –

+0

代碼中有編輯。現在就試試! – HashimR

+0

不,看起來它不會返回

5

這裏的另一種解決方案:

public String searchAttribute(Element element, String str) 
{ 
    Elements lists = element.select("[id=list]"); 

    for(Element e : lists) 
    { 
     Elements result = e.select("option:contains(" + str + ")"); 

     if(!result.isEmpty()) 
     { 
      return result.first().attr("value"); 
     } 
    } 

    return null; 
} 

測試:

Document doc = Jsoup.parse(html); // html is your listed html/xml 
Strign result = searchAttribute(doc, "Second value") // result = 1 
6

這可以幫助你..

String demo = "<select id='list'><option value='0'>First value</option><option value='1'>Second value</option><option value='2'>Third value</option></select>"; 


     Document document = Jsoup.parse(demo); 
     Elements options = document.select("select > option"); 

     for(Element element : options) 
     { 
      if(element.text().equalsIgnoreCase("second value")) 
      { 
       System.out.println(element.attr("value")); 
      } 

     } 
1

我認爲最簡單的解決方法是:

Document doc = Jsoup.parse(html); 
String value = doc.select("#list > option:contains(Second value)").val();