Ich habe den folgenden Code.Java 8 Strom api Steuerausgang
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;
}
Es gibt mir die folgende Ausgabe
Optional[<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="5ue/NxnSLQ2akzQo5R8wBEZ,,."
ich die Ausgabe steuern möchte, damit es mir nur __VIEWSTATE "5ue/NxnSLQ2akzQo5R8wBEZ,,."
gibt Ich habe versucht mit .map(input -> input.attr("value"))
und es gibt mir Optional[5ue/NxnSLQ2akzQo5R8wBEZ,,.
aber wenn ich eine zusätzliche .map(input -> input.attr("name"))
hinzufügen, um auch giv e mir der Name Ich bekomme den folgenden Fehler "Kann Methode nicht auflösen 'attr (java.lang.String)'". Was mache ich falsch im Code? Gibt es einen Weg dahin?
Dank @Eran. Das funktioniert. Die Ausgabe, die ich jetzt bekomme, ist 'Optional [__ VIEWSTATE fmxGAU4TK1P1'. Gibt es eine Möglichkeit, das 'Optional [' in der Ausgabe loszuwerden? – g3blv
@ user148095: Anstatt 'System.out.println (... .findFirst())' '' .findFirst(). IfPresent (System.out :: println) 'zu verwenden, um den Inhalt des' Optional' zu drucken, falls da ist einer. Oder verwenden Sie 'System.out.println (... .findFirst(). OrElse (" alternative "))' um entweder den Inhalt oder eine Alternative zu drucken, wenn keine Übereinstimmung gefunden wurde. – Holger