<select name="testselect" id="testselect" class="input">
<option value="1">test1</option>
<option selected="selected" value="2">test2</option>
</select>java代码HasAttributeFilter has_test = new HasAttributeFilter("id", "testselect");
NodeList nodelist_select = parser.extractAllNodesThatMatch(has_test);
SelectTag selectTag_test = (SelectTag) nodelist_select.elementAt(0);
OptionTag[] optionlist = selectTag_test.getOptionTags();

String select = "";
for (int i = 0; i < optionlist.length; i++) {
OptionTag option = (OptionTag) optionlist[i];
select = option.getAttribute("selected");
if (null != select && select.equals("selected")) {
System.out.println(option.getAttribute("value"));
break;
}
}
getAttribute("selected");的时候,在第一个test1这个tag这里没问题,第二个tag也就是选中的那个tag,总是遇到类似如下的异常。java.lang.IllegalArgumentException: can't get the 8characters at position 24940 - read beyond end of stringgetAttribute("value")也有一样的异常。
请帮忙分析下。我程序目的是取出那个选中的value,“2”htmlparser

解决方案 »

  1.   

    首先声明 没用过htmlparser问题1:在java代码第二行处,你应该得到当前被选中的option(肯定有这个方法),然后直接取值;问题2:按照你的思路,也应该是双重循环,我怎么就看见一个循环了呢
      

  2.   

    <option selected value="2">test2</option>
    应该是这样的。
      

  3.   

    getAttributeEx也抛异常的。没有直接得到选中值的方法,有的话,我早用了啊。和几重循环没关系,问题是optionTag的方法怎么会抛这个异常的,好奇怪有用过的朋友,帮助下吗?
      

  4.   

    这个问题,就是用getAttribute的时候,如果这个option有这个attribute就会抛异常,不论是value还是selected,如果没有就不会抛异常,然后返回null
      

  5.   

    最后换用jsoup了,依然谢谢!
    结贴结贴