/ / Wie bekomme ich einen Wert aus einem HTML-Element in Android? - Android, HTML-Analyse

Wie bekomme ich einen Wert von HTML-Element in Android? - Android, HTML-Parsing

Wie kann ich nur "H4sIAAA" erhalten?

String out="<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA"  autocomplete="off" />";

Antworten:

-1 für die Antwort № 1

Der beste Weg, solche Dinge zu tun, ist die Verwendung regulärer Ausdrücke.

Ein einfaches Beispiel, das genau zu Ihrem Problem passt:

String out= "<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA"  autocomplete="off" />";
Pattern pattern = Pattern.compile(".*(value="(\w*)").*", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(out);

if (matcher.matches()) {
System.out.println(matcher.group(2));
}

Dies funktioniert nur für eine Leitungseingabe mit einem Wert von "value =".

Was tut es?

  1. Es bereitet einen Matcher für reguläre Ausdrücke vor, der der gesamten Zeichenfolge entspricht, eine Gruppe mit dem Attribut "value" und eine zweite Gruppe mit dem Wert des Attributs "value".

  2. Es erstellt einen Matcher anhand des Musters und Ihrer angegebenen Zeichenfolge

  3. Wenn der Matcher übereinstimmt, wird der Gruppeninhalt 2 ausgegeben, der der Attributwert ist

Der Vorteil der Verwendung von regulären Ausdrücken ist derSie können Ihren Ausdruck so gestalten, dass er alle nutzlosen Inhalte ignoriert, unabhängig davon, was er ist und sich auf den gewünschten Extrakt konzentrieren. Dieses Beispiel ist nur für eine Zeileneingabe mit genau einem Wertattribut nützlich. Wenn Sie Hole-HTML-Seiten analysieren möchten, müssen Sie sie an Ihre Anforderungen anpassen.

Regex-Dokument: https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html Guter Ort, um Regex zu testen: http://regexr.com/

Habe Spaß!


-1 für die Antwort № 2
final String VALUE = "value="";
int start = out.indexOf(VALUE) + VALUE.length();
int end = out.indexOf(""", start);
System.out.println(out.substring(start, end));