我有以下代码。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