我有以下代碼。Java 8流API控制輸出
List<String> parseAttribValueByTag(String tag, String attrib, List<String> attribName) throws IOException {
List<String> keys = new ArrayList<>();
Document doc = Jsoup.connect(url).get();
Elements inputs = doc.select(tag + "[" + attrib + "]");
for (String item : attribName) {
System.out.println(inputs.stream()
.filter(input -> input.attr("name").contains("__VIEWSTATE"))
.findFirst());
}
return keys;
}
它給了我下面的輸出
Optional[<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="5ue/NxnSLQ2akzQo5R8wBEZ,,."
我想控制輸出,因此只給了我__VIEWSTATE "5ue/NxnSLQ2akzQo5R8wBEZ,,."
我用.map(input -> input.attr("value"))
嘗試,這讓我Optional[5ue/NxnSLQ2akzQo5R8wBEZ,,.
但是當我增加一個額外.map(input -> input.attr("name"))
也giv e我的名字我得到以下錯誤「無法解析方法'attr(java.lang.String)'」。我在代碼中做錯了什麼?有沒有辦法解決它?
謝謝@Eran。這樣可行。我現在得到的輸出是'Optional [__ VIEWSTATE fmxGAU4TK1P1'。有沒有辦法擺脫'可選['在輸出中? – g3blv
@ user148095:使用'... .findFirst()。ifPresent(System.out :: println)'來打印'Optional'的內容,而不是使用'System.out.println(... .findFirst())有一個。或者使用'System.out.println(... .findFirst()。或者Esese(「alternative」))'來打印內容或者如果沒有匹配則打印替代內容。 – Holger