Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jsoup访问HTML选择标记_Java_Html_Jsoup - Fatal编程技术网

Java Jsoup访问HTML选择标记

Java Jsoup访问HTML选择标记,java,html,jsoup,Java,Html,Jsoup,我是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的新手,在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”吗?

试试下面的代码:

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");
    }
}

希望有帮助

这里有另一个解决方案:

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
这可能对你有帮助

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"));
            }

        }
String demo=“第一个值第二个值第三个值”;
documentdocument=Jsoup.parse(演示);
元素选项=文档。选择(“选择>选项”);
用于(元素:选项)
{
if(element.text().equalsIgnoreCase(“第二个值”))
{
System.out.println(element.attr(“值”));
}
}

我认为最简单的解决方案是:

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

对不起,第2行的“选项”中有一个额外的“s”。请现在检查一下。