Java Jsoup POST:定义所选选项以返回HTML?
我试图生成一个HTML帖子到一个有选项列表的页面。有一个下拉列表,用户在其中选择一个项目,然后单击“生成”按钮。根据所选的选项,它将返回各种结果。我对HTML前后进行了比较,可以看到如下差异: 以前Java Jsoup POST:定义所选选项以返回HTML?,java,android,html,jsoup,Java,Android,Html,Jsoup,我试图生成一个HTML帖子到一个有选项列表的页面。有一个下拉列表,用户在其中选择一个项目,然后单击“生成”按钮。根据所选的选项,它将返回各种结果。我对HTML前后进行了比较,可以看到如下差异: 以前 <option value="Option1">Option 1</option> <option value="Option2">Option 2</option> <option value="Option3">Option 3<
<option value="Option1">Option 1</option>
<option value="Option2">Option 2</option>
<option value="Option3">Option 3</option>
必须使用数据通过字段的
名称属性设置字段的值
使用时:
.data("selected", "Option2")
与在请求页面的表单中包含此元素相同(请注意name=“selected”
):
输出:
<html>
<head></head>
<body>
<div>example</div>
<form>
<select name="mySelect">
<option value="Option1">Option 1</option>
<option value="Option2" selected="selected">Option 2</option>
<option value="Option3">Option 3</option>
</select>
</form>
</body>
</html>
例子
选择1
选择2
选择3
我理解你的意思,但我认为我在处理这个问题时完全错了。我发现我可以使用Jsoup设置属性,但是当我将修改后的HTML发布回服务器时,它只返回所选的选项。我真正需要做的是在解析之前点击网页元素,从我的理解来看,这也是因为我试图在Android中这样做,这似乎是我最好的选择,但正如上面提到的,这对于我想要做的事情来说真的是过火了。你是对的。作为补充,我编辑了答案。看看吧,可能会有帮助。
.data("selected", "Option2")
<select name="selected">
<option value="Option1">Option 1</option>
<option selected="selected" value="Option2">Option 2</option>
<option value="Option3">Option 3</option>
</select>
import org.jsoup.Jsoup;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
public class JSoupChangeDom {
public static void main(String[] args) {
Document doc = Jsoup.parse(""+
" <html><body> " +
" <div>example</div> " +
" <form> " +
" <select name='mySelect'> " +
" <option value='Option1'>Option 1</option> " +
" <option value='Option2'>Option 2</option> " +
" <option value='Option3'>Option 3</option> " +
" </select> " +
" <form> " +
" </body></html> ");
Element mySelect =
doc.getElementsByAttributeValue("name", "mySelect").get(0);
String optionValueToBeSelected = "Option2";
Elements options = mySelect.getElementsByTag("option");
for (Element option : options) {
if (option.attr("value").equals(optionValueToBeSelected)) {
option.attr("selected", "selected");
} else {
option.removeAttr("selected");
}
}
System.out.println(doc);
}
}
<html>
<head></head>
<body>
<div>example</div>
<form>
<select name="mySelect">
<option value="Option1">Option 1</option>
<option value="Option2" selected="selected">Option 2</option>
<option value="Option3">Option 3</option>
</select>
</form>
</body>
</html>