私は次のコードを持っています。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;
}
それは私に、私はそれだけで私は.map(input -> input.attr("value"))
を使用してみました、それは私に与えてくれ__VIEWSTATE "5ue/NxnSLQ2akzQo5R8wBEZ,,."
を与えるように、出力を制御したいと思います次の出力
Optional[<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="5ue/NxnSLQ2akzQo5R8wBEZ,,."
を与えるOptional[5ue/NxnSLQ2akzQo5R8wBEZ,,.
しかし、私はさらに.map(input -> input.attr("name"))
をgivに追加すると私の名前に次のエラーが表示される "メソッド 'attr(java.lang.String)'"を解決できません。私はコードで間違っているのですか?その周りに道がありますか?あなたが.map(input -> input.attr("value"))
を追加する場合
ありがとう@Eran。それは動作します。私が今得する出力は 'Optional [__ VIEWSTATE fmxGAU4TK1P1'です。 'オプション'の出力を取り除く方法はありますか? – g3blv
@ user148095: 'System.out.println(... .findFirst())の代わりに' ... .findFirst()。ifPresent(System.out :: println) 'を使用して' Optional'の内容を出力しますここに一つ。または、 'System.out.println(... .findFirst()。orElse(" alternative "))'を使用して、一致するものがない場合は内容または代替を出力します。 – Holger