带有复选框和选择输入的JSoup解析表单

时间:2015-03-04 15:19:29

标签: java checkbox jsoup

我有一个表格,我必须用jsoup阅读,它包含几个字段,包括复选框和组合框(选择输入)。

我正在阅读以下代码的值 -

Element campaignForm = doc.getElementById("Campaign");
            Elements allInputFields = campaignForm.getElementsByTag("input");
            Elements allSelections = campaignForm.getElementsByTag("select");                               
            Map<String, String> postData = new HashMap<String, String>();
            for(Element selectField:allSelections){
                postData.put(selectField.attr("name"), selectField.attr("value"));
            }

            for(Element inputField:allInputFields){
                if(inputField.attr("type").equalsIgnoreCase("checkbox")){
                    postData.put(inputField.attr("name"), inputField.attr("checked").equalsIgnoreCase("checked")?"1":"0");
                }else{
                    postData.put(inputField.attr("name"), inputField.attr("value"));
                }
            }

因此,当我打印postData Map时,它为文本输入字段提供了正确的值,但是对于复选框和下拉列表(组合框),它不起作用。如果有不同的方法来处理复选框并在jsoup中选择输入,请告诉我。

修改 复选框我在评论的帮助下工作,但选择输入仍无效。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我使用以下代码 -

for(Element selectField:allSelections){
                String nameField = selectField.attr("name");
                String valueField = "";
                Elements allOptions = selectField.getElementsByTag("option");
                for(Element opt:allOptions){
                    if(opt.attr("selected").equalsIgnoreCase("selected")){
                        valueField = opt.attr("value");
                        break;
                    }
                }
                postData.put(nameField, valueField);                    
            }

            for(Element inputField:allInputFields){
                if(inputField.attr("type").equalsIgnoreCase("checkbox")){
                    postData.put(inputField.attr("name"), inputField.attr("checked").equalsIgnoreCase("checked")?"1":"0");
                }else{
postData.put(inputField.attr("name"), inputField.attr("value"));
    }